解散进程会阻止其他进程的正常运行吗?

时间:2010-03-10 05:03:21

标签: ruby-on-rails linux process mongrel god

我的杂种没有响应,上帝重启和群集重启都没有产生很大的影响。我挖得更深,比我意识到我有很多僵尸进程。

app 29607 27948 0 19:45? 00:00:00 [mongrel_rails] app 30578 21681 0 19:52? 00:00:00 [mongrel_rails] app 30704 21405 0 19:53? 00:00:00 [mongrel_rails]

但是,在使用以下方法杀死父进程之后:

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

重启开始工作。我杀死僵尸是否有助于重启工作?如果是这样,那很奇怪,因为我找不到任何能够解释失效过程如何影响正常过程的参考文献

2 个答案:

答案 0 :(得分:0)

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

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

另一方面,你不能杀死他们已经退出的僵尸进程。如果父进程没有收获它的子进程,你将需要终止父进程,以便init可以收获僵尸。

进一步考虑,您可能没有达到整个机器进程限制,而是达到每用户ulimit进程限制。此限制通常低于操作系统总限制。要了解您的限制,您可以ulimit -u

运行

答案 1 :(得分:0)

我相信僵尸进程正在保留预定义的套接字集(例如8000),因此阻止了对杂种进程的正确重启。