SSH 孤立进程

SSH 孤立进程

在某些虚拟机上,似乎每个 ssh 会话在退出时都会变成孤立进程。我可以通过 ssh 登录到机器,然后执行 exit 或 ^D,然后使用 ps -elf | grep defunct 来重现它,我又多了一个 ssh 进程。我们的监控大量使用 ssh,所以到早上就会有成百上千个孤立僵尸进程,大约有 20 个虚拟机。

以下是 ps 输出的一个例子:

5 Z user  3197     1  0  80   0 -     0 exit   10:00 ?        00:00:00 [sshd] <defunct>

我尝试对父级(sshd)进行 strace 以查看,这是我退出 ssh 会话时的输出:

--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=24025, si_status=255, si_utime=0, si_stime=2} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 255}], WNOHANG, NULL) = 24025
wait4(-1, 0x7ffc0d57901c, WNOHANG, NULL) = 0
rt_sigaction(SIGCHLD, NULL, {0x7f164fee7d70, [], SA_RESTORER, 0x7f164db34d40}, 8) = 0
rt_sigreturn() = -1 EINTR (Interrupted system call)
select(7, [3 4], NULL, NULL, NULL

并不是说我真的知道我在那里寻找什么,但我不知道可能是什么问题。有什么想法吗?我还看到很多 nrpe 已停止运行的进程,但出于某种原因,重新启动 sshd 会清理 ssh 和 nrpe 僵尸进程。

不知道这是否相关,但这些机器上的 I/O 非常非常慢,几百兆字节的简单 dd 有时需要数百秒才能完成。

编辑:正如所问,它是 ubuntu 信任的 openssh 6.6p1-2ubuntu2.7

答案1

因此,在 sshd_config 中禁用 UsePrivilegeSeparation 似乎可以解决问题。虽然我并不是很喜欢这样做,但确实有效。

相关内容