我最近从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将负责产生所有需要的进程。 所以实际上不需要孩子,而那些孩子通常是被遗忘的。