Я запускаю обработчик PHP fcgid
LoadModule fcgid_module modules/mod_fcgid.so
FcgidMaxRequestsPerProcess 3000
FcgidMaxProcesses 3000
FcgidMaxProcessesPerClass 16
FcgidMinProcessesPerClass 1
FcgidProcessLifeTime 7200
FcgidIOTimeout 180
IPCConnectTimeout 60
FcgidIdleTimeout 600
FcgidIdleScanInterval 30
FcgidBusyTimeout 3600
FcgidBusyScanInterval 30
FcgidErrorScanInterval 3
FcgidZombieScanInterval 3
FcgidFixPathinfo 0
FcgidMaxRequestInMem 419430400
FcgidMaxRequestLen 1073741824
Процессы завершаются каждые 10 минут или более, также я установил FcgidProcessLifeTime 7200
я использую mpm_worker
также :
Timeout 50
<IfModule worker.c>
StartServers 16
ServerLimit 1800
MaxClients 1728
MinSpareThreads 75
MaxSpareThreads 250
ThreadLimit 600
ThreadsPerChild 64
MaxRequestsPerChild 10000
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5
</IfModule>
Процессор: Dual Intel xeon E5630, ОЗУ: 32 ГБ DDR3, PHPv5.3.14
Как я могу решить эту проблему .? и сохранить время жизни процесса.
Это очень старый вопрос, но недавно его пришлось решать.
У тебя есть FcgidIdleTimeout 600
.
Это означает, что если процесс простаивает в течение 10 минут, он будет завершен независимо от того, что вы установили в FcgidProcessLifeTime
.
Я не тестировал это, но если вы хотите подтвердить, что можете установить FcgidMaxProcessesPerClass 1
а затем отправлять запросы каждые 5 минут. Это должно поддерживать этот процесс в течение FcgidProcessLifeTime
потому что он никогда не будет простаивать FcgidIdleTimeout
.
Таким образом, оптимизированная конфигурация будет зависеть от вашей рабочей нагрузки.
Я бы рекомендовал перейти на php-fpm с помощью mod_fastcgi или mod_proxy_fcgi (требуется Aapache 2.4). PHP-FPM самостоятельно управляет процессами, и вы даже можете выбрать разные менеджеры процессов, подходящие для вашего сайта.
php-fpm становится все более и более стандартным способом развертывания приложений php.