不尊重Apache2 / mod_fcgid / PHP进程限制

我最近从nginx / php_fpm移到了Apache2 / mod_fcgid / PHP。 这是我进行这种迁移的第二台服务器,但使用频率要比第一台less得多,这就像一个魅力一样。

问题出现在PHP进程中。 在查看mod_fcgid文档时 ,看起来杀死空闲进程的默认值是300秒; 我已经把这个改成了20个。现在,如果300能够工作的话,我会好起来的 – 但是这并没有发生。 现在已经运行了近一天,服务器状态显示了12个活动进程:

 进程名称:php5
 PID活动空闲访问状态
 19243 84879 14420 11准备就绪

进程名称:php5
 PID活动空闲访问状态
 20954 82143 149 22准备就绪
 20947 82149 149 22准备就绪
 20953 82143 149 13准备就绪

进程名称:php5
 PID活动空闲访问状态
 20589 82765 23644 72准备就绪

进程名称:php5
 PID活动空闲访问状态
 17663 86103 2034 117准备就绪

进程名称:php5
 PID活动空闲访问状态
 19862 83961 1976 91准备好了

进程名称:php5
 PID活动空闲访问状态
 18495 85825 5164 18准备就绪

进程名称:php5
 PID活动空闲访问状态
 25463 75109 23948 24准备好

进程名称:php5
 PID活动空闲访问状态
 2466 60019 60016 2准备就绪

进程名称:php5
 PID活动空闲访问状态
 20729 82541 12592 23准备就绪

进程名称:php5
 PID活动空闲访问状态
 22135 80616 46361 6准备就绪 

PHP应用程序目前没有提供服务 – Apache正在返回一个503.然而,它仍然服务于服务器状态模块,并且mod_mono / Mono 2.10应用程序仍在服务中。 问题在于PHP。

/etc/apache2/mods-available/fcgid.conf …

<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 10 FcgidMaxRequestsPerProcess 500 FcgidIdleTimeout 20 FcgidFixPathinfo 1 FcgidMaxProcesses 10 </IfModule> 

(heh – 最大进程也没有被尊重…)当然,fcgid.conf在mods-enabled中是smylinked。

尝试设置envvariables:

 PHP_FCGI_CHILDREN=0 

在你的PHP入门脚本。

mod_fcgid将负责产生所有需要的进程。 所以实际上不需要孩子,而那些孩子通常是被遗忘的。