1

我的杂种没有响应,上帝重启和集群重启都没有太大的不同。我挖得更深一点,我意识到我有很多僵尸进程。

应用程序 29607 27948 0 19:45?00:00:00 [mongrel_rails] 应用程序 30578 21681 0 19:52 ?00:00:00 [mongrel_rails] 应用程序 30704 21405 0 19:53 ?00:00:00 [mongrel_rails]

但是,在我使用这个杀死父进程之后:

“ps -ef | grep defunct | grep -v grep | awk '{print $3}' | xargs kill -9”

重新启动开始工作。我杀死僵尸是否有助于重启工作?如果是这样,那就太奇怪了,因为我找不到任何参考资料来解释失效进程如何影响正常进程

4

2 回答 2

0

僵尸进程有可能阻止新进程。Linux 可以限制唯一进程的数量,一旦所有这些进程都在使用中,您将无法创建新进程。

在相对现代的 Linux (openSUSE 11.1) 上,默认值为 32,768 个进程。

附带说明,您不能杀死僵尸进程,因为它们已经退出。如果父进程没有收割它的子进程,则需要杀死父进程以便 init 可以收割僵尸。

进一步考虑,您可能没有达到总机器进程限制,而是达到每个用户的 ulimit 进程限制。此限制通常低于总操作系统限制。要找出你的极限是什么,你可以运行ulimit -u

于 2010-03-10T05:43:52.560 回答
0

我相信僵尸进程保留了预定义的一组套接字(例如 8000),因此阻止了混合进程的正确重启。

于 2010-03-10T18:01:42.030 回答