什么会导致ssh会话缓慢?

我SSH在远程主机,但terminal性能差。 我正在键入的符号不立即显示,但有一些延迟。 有时在延迟后一次显示两个符号。

高延迟是ssh性能不佳的另一个原因。 我强烈build议使用mtr作为traceroute的更好替代品。 它应该能够给你一些你的networking问题可能发生的想法。

禁用X11转发,如果你不需要(ssh -x)和启用压缩(ssh -C),也可以加速你的会话。

我可以想到两个可能的原因:

  1. 丢包在连接上
  2. 服务器负荷很高。

我试图通过很快发现terminal是好的来衡量networking性能。 发生了什么?

我们在两个Internet通道路由器之间有一个负载均衡。 有时它通过wan1路由我的sshstream量,有时通过wan2。 我build议,只有一个频道有问题。 所以我用mtr(伟大的工具!)分别测量了两个通道的networking性能。

是啊! wan2有21个跳跃,110 ms,wan1有15个,只有21 ms! wan2延迟是问题。

使用9的压缩和压缩级别。这应该有所帮助。 您可以在/ etc / ssh / ssh_config中configuration这些参数。 但是,如果实际的networking非常差这个技巧不会做很多好事。

这种行为最明显的原因是饱和或丢包的链接。 你从工作站到你正在使用的机器有多less跳? 您是否分析了traceroute(如果适用)?

如果你使用的是OpenSSH(长带宽+高延迟),确保你至less使用了4.7版本,因为它包含修复,使得OpenSSH使用更大的TCP窗口大小。

* The SSH channel window size has been increased, and both ssh(1) sshd(8) now send window updates more aggressively. These improves performance on high-BDP (Bandwidth Delay Product) networks. 

如果要充分发挥潜力,这一点非常重要,否则,发件人可能需要等待确认才能继续发送。

正如其他人所说,它可能来自延迟,networking损失,服务器速度慢。
有时候在一种types中会看到2个字符,因为现代TCP堆栈使用一种叫做Naggle的algorithm。

这也可能是一些SSH蛮力尝试,节制您的连接。 每当我的会话运行缓慢,我检查日志,并在很多情况下,有人正在尝试密码像疯了似的。

configuration不当的DNS可能会导致此问题。 一旦login,服务器就会响应,上传和下载文件的速度相当快,但是SSHlogin会很慢。

有一点要看,只是服务器内存。 我运行一个内存为256Mb的Ubuntu虚拟机,SSH真的很慢。 把这个加倍到512Mb解决了这个问题。