我注意到当我通过慢速链接通过 SSH 连接到远程机器时,在传输了相对大量的数据后,SSH 似乎“粘住”了。
例如,在链接上输入文本没问题,但运行ls /etc会冻结连接几分钟。
我会理解延迟是否是因为我最大化了连接速度并且在传输数据后它恢复正常,但是连接冻结的时间比您预期的实际涉及的数据量要长得多。
奇怪的是,如果我打开两个进出同一台机器的 SSH 连接,当其中一个冻结时,另一个仍然可以正常工作。所以我不能最大化连接速度,否则它们会同时冻结。
任何一个盒子或(据我所知)之间的路由器都没有活动的流量整形,因此不应该丢弃任何数据包以将平均传输速度保持在一定范围内。
任何人都可以提出任何可能导致这种行为的建议,或者任何需要进一步检查的内容?
scp和发生了同样的事情sshfs,scp报告了一个巨大的传输速率(许多 MB/秒,然后速度慢慢回落到stalled几分钟,然后如果我幸运的话它会重复直到文件完成传输。) sshfs工作但通常(并非总是)在保存文件后,挂载点会在几分钟内无响应,从而暂时阻止任何尝试访问它的程序。
编辑:我尝试使用iperf并获得一些有趣的统计数据:
Local: 0.0- 0.9 sec 256 KBytes 2.25 Mbits/sec
Remote: 0.0- 7.0 sec 256 KBytes 302 Kbits/sec
Local: 0.0-15.9 sec 1.00 MBytes 529 Kbits/sec
Remote: 0.0-16.0 sec 1.00 MBytes 524 Kbits/sec
Run Code Online (Sandbox Code Playgroud)
看起来低于一定数量的数据,本地端可以比远程接收快得多。我想这毕竟不是 SSH 问题。我将调查一些可能会对此进行调整的 TCP 设置,但如果有人确实知道,请提供建议!
您的 SSH 连接超出了客户端和服务器之间某处的 MTU 大小,并且路径最大传输单元发现不起作用。(这是以安全的名义全面阻止 ICMP 流量是一个坏主意的几个原因之一。)