【问题标题】:erlang ssh_sftp start_channel function call is getting failederlang ssh_sftp start_channel 函数调用失败
【发布时间】:2018-03-21 10:35:41
【问题描述】:

我们有一个基于erlang的分布式系统系统,有一个服务器节点和数百个客户端节点(系统分布在内网)。我们有一个要求,所有客户端节点都将连接到服务器节点并尝试使用 sftp同时下载一些文件(所有客户端节点将访问大多数相同的文件)。我们下载文件的步骤是:

  1. 使用如下函数调用在服务器节点和客户端节点之间建立 ssh sftp 连接:

    ssh_sftp:start_channel/2.

  2. 然后通过如下函数调用读取文件:

    ssh_sftp:read_file/2

我们面临的问题是,当客户端数量更多时,观察到很少有客户端节点无法在服务器节点之间建立连接。即ssh_sftp:start_channel/2 函数调用失败。

谁能给我解释一下;

  1. 我们可以在单个系统中建立的 sftp 会话数量是否有任何限制?

  2. 连接请求失败的可能原因是什么?

  3. 我们在这种方法中做错了什么吗?

  4. 有没有更好的解决方案,我们可以保证所有客户端节点都能连接到服务器并能够下载文件。

观察:我们尝试将 25 个客户端节点连接到服务器;第一次尝试只有 2 个节点连接失败,第二次尝试 5 个节点连接失败。为什么会出现这种随机行为?。

【问题讨论】:

  • ssh_sftp:start_channel/2 究竟返回了什么?

标签: erlang port sftp distributed


【解决方案1】:

我想我可以在下面回答一些问题(如果我错了,请纠正我):

  1. 当你使用这个并发时,Erlang 真的很强大,所以你的问题是你的物理硬件(服务器)的能力。
  2. 我真的不知道您的项目中存在什么问题,但我的电信项目可以轻松处理一千个呼叫,其中 2 个进程处理每个呼叫。 1个进程是主进程处理会话(连接),彼此监视和处理错误主进程,这样就不会失败连接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2016-03-30
    • 2014-02-04
    相关资源
    最近更新 更多