Недавно я перешел на Apache2 / mod_fcgid / PHP с nginx / php_fpm. Это второй сервер, на котором я сделал эту миграцию, но он используется гораздо реже, чем первый, который работает как шарм.
Проблема заключается в порождаемых им процессах PHP. Глядя на документация mod_fcgid, похоже, что значение по умолчанию для уничтожения незанятых процессов составляет 300 секунд; Я изменил это на 20. На данный момент, я был бы в порядке, если бы 300 работал, но этого не происходит. Он работает уже почти день, и в статусе сервера отображается 12 активных процессов:
Process name: php5 Pid Active Idle Accesses State 19243 84879 14420 11 Ready Process name: php5 Pid Active Idle Accesses State 20954 82143 149 22 Ready 20947 82149 149 22 Ready 20953 82143 149 13 Ready Process name: php5 Pid Active Idle Accesses State 20589 82765 23644 72 Ready Process name: php5 Pid Active Idle Accesses State 17663 86103 2034 117 Ready Process name: php5 Pid Active Idle Accesses State 19862 83961 1976 91 Ready Process name: php5 Pid Active Idle Accesses State 18495 85825 5164 18 Ready Process name: php5 Pid Active Idle Accesses State 25463 75109 23948 24 Ready Process name: php5 Pid Active Idle Accesses State 2466 60019 60016 2 Ready Process name: php5 Pid Active Idle Accesses State 20729 82541 12592 23 Ready Process name: php5 Pid Active Idle Accesses State 22135 80616 46361 6 Ready
На данный момент приложения 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>
(хех - Максимальное количество процессов тоже не соблюдается ...) Конечно, fcgid.conf при включенных модах добавлен в smylink.
Попробуйте установить переменную env:
PHP_FCGI_CHILDREN=0
в вашем стартовом скрипте php.
mod_fcgid позаботится о запуске всех необходимых процессов. Так что на самом деле дети не нужны, и обычно они остаются позади.