正如标题所暗示的那样,当pid_max
(32 位标准是 32768)达到许多僵尸进程时会发生什么?
在我们的服务器上,用户生成了很多suphp defunct zombie
进程,这迫使我们的服务器重新启动……我认为这是因为pid_max
达到了……
我在 Apache 2.2.3 上运行 CentOS 5.8
谢谢。最好的问候,约翰。
编辑 感谢您的回答。
正如标题所暗示的那样,当pid_max
(32 位标准是 32768)达到许多僵尸进程时会发生什么?
在我们的服务器上,用户生成了很多suphp defunct zombie
进程,这迫使我们的服务器重新启动……我认为这是因为pid_max
达到了……
我在 Apache 2.2.3 上运行 CentOS 5.8
谢谢。最好的问候,约翰。
编辑 感谢您的回答。
PID 是按顺序生成的,在分配给进程之前会进行检查以确保进程当前没有特定的 PID。当达到 pid_max 时,计数器简单地回到开头。如果没有更多可用的 PID,则无法创建更多进程,您将收到一条错误消息“...没有更多进程”。
如果没有可用的 PID,则无法创建新进程。一些操作系统为 root 用户保留了一些 PID。
不过,PID 会被重新使用。因此,如果有可用的 PID,就会使用它。
在 32 位系统上,最大 PID 为 32767。每次达到限制时,内核都会重置其进程 ID 计数器,以便从低整数值开始分配进程 ID。
它将被重置为 300,而不是 1。这样做是因为许多低编号的进程 ID 被系统进程和守护进程永久使用,因此时间将浪费在搜索该范围内未使用的进程 ID 上。