我有一台运行 WHM 的 CentOS 服务器,它使用 FastCGI ( mod_fcgid
),在带有 SuExec 的 Apache 2.0 上运行 PHP 5.2.17。当我启动 Apache 时,它开始正常运行并处理请求。如果我ps
以 root 身份在终端上运行,我会看到php
进程,它们由其父进程拥有httpd
。
经过 X 段时间后 - 时间不定,一般不会超过几个小时 - 服务器将开始生成由 init 进程 ID ( 1
)拥有的 PHP 作业
良好列表的示例:
12918 18254 /usr/bin/php
12918 18257 /usr/bin/php
12918 18293 /usr/bin/php
12918 18545 /usr/bin/php
12918 18546 /usr/bin/php
12918 19016 /usr/bin/php
12918 19948 /usr/bin/php
然后后来是这样的:
1 6800 /usr/bin/php
1 6801 /usr/bin/php
1 7036 /usr/bin/php
1 8788 /usr/bin/php
1 10488 /usr/bin/php
1 10571 /usr/bin/php
1 10572 /usr/bin/php
php
由 ( ) 拥有的正在运行的进程永远1
不会被清除。为什么这些进程会运行?我们setsid
在此服务器运行的代码中不使用基本 PHP 以外的任何内容。
欢呼与感谢
答案1
这些进程的父进程死了,但是它们自己却没有终止,所以它们成为了孤儿进程,因此被进程1,也就是init收养。当这种情况经常发生时,软件通常会出现问题,你可能需要考虑升级到较新的版本。