erlang ssh_sftp start_channel函数调用失败

时间:2017-10-10 06:06:09

标签: erlang port sftp distributed

我们有一个基于 erlang 构建的分布式系统系统,其中包含一个服务器节点和数百个客户端节点(系统通过内部网络分发)。我们要求所有客户端节点都连接到服务器节点,并尝试使用sftp下载某个文件(所有客户端节点都将访问相同的文件)同时。我们下载文件的步骤是:

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

    ssh_sftp:start_channel/2

  2. 然后通过执行函数调用来读取文件,如下所示:

    ssh_sftp:read_file/2

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

    有人可以解释一下我吗;

    1. 我们可以在一个系统中建立什么样的sftp会话数量?

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

    3. 我们在这种方法中有什么不妥吗?

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

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

1 个答案:

答案 0 :(得分:0)

我想我可以回答下面的一些问题(如果我错了就解决我的问题):

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