【发布时间】:2018-03-21 10:35:41
【问题描述】:
我们有一个基于erlang的分布式系统系统,有一个服务器节点和数百个客户端节点(系统分布在内网)。我们有一个要求,所有客户端节点都将连接到服务器节点并尝试使用 sftp同时下载一些文件(所有客户端节点将访问大多数相同的文件)。我们下载文件的步骤是:
-
使用如下函数调用在服务器节点和客户端节点之间建立 ssh sftp 连接:
ssh_sftp:start_channel/2. -
然后通过如下函数调用读取文件:
ssh_sftp:read_file/2
我们面临的问题是,当客户端数量更多时,观察到很少有客户端节点无法在服务器节点之间建立连接。即ssh_sftp:start_channel/2 函数调用失败。
谁能给我解释一下;
我们可以在单个系统中建立的 sftp 会话数量是否有任何限制?
连接请求失败的可能原因是什么?
我们在这种方法中做错了什么吗?
有没有更好的解决方案,我们可以保证所有客户端节点都能连接到服务器并能够下载文件。
观察:我们尝试将 25 个客户端节点连接到服务器;第一次尝试只有 2 个节点连接失败,第二次尝试 5 个节点连接失败。为什么会出现这种随机行为?。
【问题讨论】:
-
ssh_sftp:start_channel/2究竟返回了什么?
标签: erlang port sftp distributed