我使用 CentOS( CentOS release 6.4 (Final)
) 上传数据到集群,带宽达到 100MByte/s 左右(网络使用率已满)。此外,还有一个 redis(v=3.2.1) 服务器 (0.0.0.0:6379) 正在运行以维持上传状态。我在后端运行 redis-server(SSH 退出后不退出):
$ (redis-server redis.conf &)
通过从另一个 Linux(名为 jump-server)登录 CentOS,有时(并非总是发生,但经常发生),CentOS 会关闭 SSH 客户端:
Connection to <CentOS-ip> closed by remote host.
添加-vvv
选项后ssh -vvv root@centos-ip
,当服务器关闭连接时,我会收到更多消息:
$ debug3: Wrote 64 bytes for a total of 11549
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cc -1)
debug3: channel 0: close_fds r 4 w 5 e 6
Connection to <CentOS-ip> closed by remote host.
Connection to <CentOS-ip> closed.
Transferred: sent 8520, received 82248 bytes, in 474.0 seconds
Bytes per second: sent 18.0, received 173.5
debug1: Exit status -1
redis-server 也消失了!我grep
查看了 redis.log(DBEUG 级别),没有错误或崩溃提示。然后我在服务器上启动了一个休眠进程:
# sleep.py
import time
while 1:
time.sleep(1)
# run as (python sleep.py &)
SSH 关闭后,该进程也消失了!
为什么会发生这种情况?混乱的事实是,我开始的所有过程都消失了!为什么?
导致此问题的原因可能有很多,请给我一些提示,如果需要,我可以提供其他信息来调试该问题。非常感谢。
答案1
路由中间的一些 TCP/IP 堆栈(例如,服务器和终端客户端之间的中间跳数)实际上会导致连接关闭(如果未使用 keepalive 并且未发送连接保持 KeepAlive 数据包):::::尝试:::
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=15 -i ~/MYDIR/id_rsa ec2-user(or--root)@myserver.com
这有助于你保持联系吗?