I believe the zombie processes are holding on to the predefined set of sockets (eg 8000), and hence preventing proper restart of the mongrel processes.
It is possible for zombie processes to prevent new processes. Linux can limit the number of unique process and once all those process are in use, you won't be able to create new processes.
On a relatively modern Linux (openSUSE 11.1), the default is 32,768 processes.
On a side note, you can't kill a zombie process as they have already exited. If the parent processes does not reap it's children, you'll need to kill the parent process so that init can reap the zombies.
On further thought, you're probably not hitting the total machine process limit but the per-user ulimit process limit. This limit is usually lower then the total OS limit. To find out what your limit is you can run ulimit -u
发布评论
评论(2)
我相信僵尸进程正在保留预定义的套接字集(例如 8000),因此阻止了杂种进程的正确重新启动。
I believe the zombie processes are holding on to the predefined set of sockets (eg 8000), and hence preventing proper restart of the mongrel processes.
僵尸进程有可能阻止新进程。 Linux 可以限制唯一进程的数量,一旦所有这些进程都在使用中,您将无法创建新进程。
在相对现代的 Linux (openSUSE 11.1) 上,默认进程数为 32,768。
顺便说一句,您无法杀死僵尸进程,因为它们已经退出。如果父进程没有获取其子进程,则需要终止父进程,以便 init 可以获取僵尸进程。
进一步思考,您可能没有达到总机器进程限制,而是达到了每用户 ulimit 进程限制。此限制通常低于操作系统总限制。要了解您的限制,您可以运行
ulimit -u
It is possible for zombie processes to prevent new processes. Linux can limit the number of unique process and once all those process are in use, you won't be able to create new processes.
On a relatively modern Linux (openSUSE 11.1), the default is 32,768 processes.
On a side note, you can't kill a zombie process as they have already exited. If the parent processes does not reap it's children, you'll need to kill the parent process so that init can reap the zombies.
On further thought, you're probably not hitting the total machine process limit but the per-user ulimit process limit. This limit is usually lower then the total OS limit. To find out what your limit is you can run
ulimit -u