我遇到了一个问题,我的 Putty 会话在一段时间后会变得无响应。如果我正在跟踪某件事,或者等待一个在执行过程中不返回数据的进程,终端将锁定冻结,即使随后返回了数据。按下按键会导致相当大的延迟,直到显示屏突然更新并显示在后台发生的输出。
这不是 CTRL+S 的问题,这种情况是在终端未聚焦时发生的,并且似乎是随机发生的。
我目前的解决方法是使用一个时钟 shell 脚本在终端的一角输出时间,但这只能让我瞥一眼并判断窗口是否被锁定以及被锁定了多长时间。这不起作用,因为它会移动光标,并且在输出大量数据或尝试输入时会造成麻烦。
这是服务器配置问题吗?还是我应该使用 Putty 客户端检查一下?据我所知,这种情况只发生在一台服务器上,所以我不确定。有解决方案吗?
答案1
通常,客户端和服务器之间会发送 keepalive 数据包。如果您的服务器位于 Amazon 等地,您将体验到所谓的无状态连接。这意味着 TCP keepalive 往往不太好用。
在 Putty 中你可以执行以下操作:
在会话属性中,转到“连接”,然后在“发送空数据包以保持会话活动”下,将保持活动之间的秒数(0 为关闭)设置为例如 300(5 分钟)。
在我的 Linux 客户端上,我将以下内容放入 /etc/ssh/ssh_config 文件中:
服务器存活间隔 300
服务器存活数最大 2
基本上,这会导致您的客户端向另一端发送一个空数据包,并阻止服务器端关闭连接。