Я использую FastCGI (fcgi). У меня проблема, когда создается больше процессов PHP, чем должно быть, что съедает мою оперативную память.
Я использую WHM, поэтому установил следующие параметры PHP через веб-интерфейс WHM> Конфигурация Apache> Включить редактор> Предварительно включить VirtualHost:
<IfModule mod_fcgid.c>
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500
FcgidMaxRequestsPerProcess 500
FcgidMaxProcesses 15
FcgidMinProcessesPerClass 0
FcgidMaxProcessesPerClass 8
FcgidIdleTimeout 30
FcgidIdleScanInterval 15
FcgidProcessLifeTime 60
FcgidIOTimeout 300
FcgidMaxRequestLen 268435456
</IfModule>
(Обычно эти настройки входят в /usr/local/apache/conf/php.conf
, но этот файл перезаписывается WHM при изменении различных настроек, поэтому мне пришлось вставить их в другое место. Вышеупомянутый метод был рекомендован на форуме cPanel и приводит к включению настроек в конфигурацию Apache.)
Однако несмотря на FcgidMaxProcesses 15
, Я нашел через top
что до 45 процессов PHP выполняются одновременно во время пикового использования (а может и больше). Например, вот скриншот, сделанный на прошлых выходных:
Я действительно хочу ограничить его максимум 15 процессами. (Хотя похоже, что у меня есть свободная оперативная память, на самом деле она составляет 2 ГБ + 1 ГБ. Как правило, мне нужно, чтобы она была меньше 2 ГБ.)
Это сервер Apache, работающий под управлением CentOS 6, Apache 2 (Worker MPM), PHP 5.3.20 (FastCGI / fcgi) и MySQL 5.5.28. 2 ГБ ОЗУ (3 ГБ с возможностью наращивания), 24 процессора.
Я считаю, что следующий подход к решению этой проблемы в cPanel может быть правильным: http://www.ray.45press.com/configure-mpm-apache-xcache-fcgid-in-cpanel/
В частности, это связано с редактированием /usr/local/cpanel/cgi-sys/php5
включить следующие строки:
export PHP_FCGI_CHILDREN=1
export PHP_FCGI_MAX_REQUESTS=10000
Но будь уверен, что PHP_FCGI_MAX_REQUESTS
соответствует FcgidMaxRequestsPerProcess
из конфигурации Apache.
Далее вы хотите обратить внимание на примечание в файле о копировании этого в соответствующее место (/var/cpanel/conf/apache/wrappers/php5
), чтобы он сохранялся при обновлении apache или php.