什么是httpd <defunct>?</defunct>

时间:2011-11-15 03:45:42

标签: http centos apache

32537 apache    16   0 87424  15m 7324 S  2.3  0.3   0:00.52 httpd              
 3302 mysql     15   0  156m  41m 4756 S  1.3  0.7  10:50.91 mysqld             
  489 apache    16   0 87016  14m 6692 S  0.7  0.2   0:00.27 httpd              
  990 apache    15   0     0    0    0 Z  0.7  0.0   0:00.12 httpd <defunct>    
  665 apache    15   0 86992  13m 5644 S  0.3  0.2   0:00.20 httpd              
32218 apache    15   0 87356  14m 6344 S  0.3  0.2   0:00.53 httpd              
    1 root      15   0  2160  640  556 S  0.0  0.0   0:01.18 init  

top开始,偶尔出现httpd <defunct>。它有什么作用?

我发现网络服务器有时不响应FPDF(根据用户的要求打印PDF)。它有关系吗?

更新,加载信息:

top - 11:55:59 up 17:30,  6 users,  load average: 0.53, 0.47, 0.80
Tasks: 322 total,   1 running, 320 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.7%us,  0.2%sy,  0.0%ni, 95.1%id,  3.9%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   6219412k total,  5944068k used,   275344k free,    21024k buffers
Swap:  5140792k total,       96k used,  5140696k free,  5270708k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
 1951 apache    16   0     0    0    0 Z  0.9  0.0   0:00.33 httpd <defunct>    
 2267 apache    15   0 86992  13m 5876 S  0.9  0.2   0:00.22 httpd              
 3302 mysql     15   0  156m  41m 4756 S  0.9  0.7  11:43.72 mysqld             
 2220 apache    15   0 87204  14m 6496 S  0.6  0.2   0:00.28 httpd              
 2340 apache    15   0 87828  13m 5588 S  0.6  0.2   0:00.22 httpd              
 2341 apache    17   0 88236  14m 5564 S  0.6  0.2   0:00.15 httpd              
  842 apache    16   0 87432  15m 7180 S  0.3  0.2   0:00.81 httpd              
 2225 apache    18   0 88236  14m 5560 S  0.3  0.2   0:00.17 httpd              
 2401 apache    15   0 86916  12m 5344 S  0.3  0.2   0:00.11 httpd              
    1 root      24   0  2160  640  556 S  0.0  0.0   0:01.18 init               

3 个答案:

答案 0 :(得分:15)

已解散的进程是一个已退出但其父级尚未等待它读取其退出状态的进程,在进程表中留下一个条目。也称为僵尸进程。有关详细信息,请参阅维基百科article

答案 1 :(得分:2)

当进程在Unix上死亡时,它会向其父进程发送退出代码。一个已失效的进程,或“僵尸”,是其父母尚未查看僵尸退出代码的进程。一旦父母获得退出代码(使用wait系统调用),僵尸就会消失。

答案 2 :(得分:2)

一个已经完成的过程通常是已经完成的过程,但操作系统会将其保留到父waits之前,以便“收集”其状态。当您编写自己的“forky”代码并有错误时,通常只会看到很多这样的内容。

如果您使用

ps -Hwfe

您将看到过程层级,以及父级是什么。很奇怪它是一个httpd过程,它通常很擅长收集它的孩子。除非您的系统不完整,这就是您首先使用top的原因......