Итак, вы получили ниже сегодня ...
Примерно в это же время в журналах показано увеличение количества процессов (600) и связанной памяти (1,2 г), средняя загрузка процессора (80), пока сервер не отказал.
Сервер должен был быть полностью перезагружен хостом, так как не было доступа к панели ssh или plesk.
Fast CGI настроен, как показано ниже, и настроен для одного часто используемого сайта. Насколько я понимаю, FcgidMaxProcesses 20 должен защищать от того, что происходит, но этого не произошло.
Я прочитал много форумов с разными ответами и ссылками на множество различных директив fcgi, но не нашел ничего убедительного. Кто-нибудь получил окончательные ответы о том, как остановить такое наращивание серверного процесса и последующий сбой сервера?
Если вам нужна дополнительная информация, дайте мне знать.
Ура Энди
/var/log/apache2/error_log
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17651 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17650 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17649 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17644 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17643 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17638 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17633 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17627 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:47 2012] [warn] mod_fcgid: process 17622 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17674 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17673 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17672 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17667 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17666 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17665 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17664 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17659 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17658 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17657 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17656 graceful kill fail, sending SIGKILL
[Thu May 17 07:40:51 2012] [warn] mod_fcgid: process 17651 graceful kill fail, sending SIGKILL
https://docs.google.com/a/thesugarrefinery.com/open?id=0B_XbpWChge0VRmFLWEZfR2VBb2M https://docs.google.com/a/thesugarrefinery.com/open?id=0B_XbpWChge0VWTcwZEhoV2Fqejg https://docs.google.com/a/thesugarrefinery.com/open?id=0B_XbpWChge0VUUtVWWFINHZjZ0U https://docs.google.com/a/thesugarrefinery.com/open?id=0B_XbpWChge0VZEVMclh6ZUdaOUE
<IfModule mod_fcgid.c>
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
</IfModule>
FcgidIPCDir /var/lib/apache2/fcgid/sock
FcgidProcessTableFile /var/lib/apache2/fcgid/shm
FcgidIdleTimeout 40
FcgidProcessLifeTime 30
FcgidMaxProcesses 20
FcgidMaxProcessesPerClass 20
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 30
FcgidIOTimeout 120
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 10
FcgidMaxRequestLen 1073741824
</IfModule>
В Debian была ошибка (по крайней мере), которая делала лимит бесполезным для виртуальных хостов. Сейчас это исправлено.
Это часто вызвано зависанием сценария setuid CGI; он превышает IOtimeout, и apache пытается его убить, но не может из-за изменения uid, что приводит к ошибке.
Вы можете увеличить FcgidIOTimeout или FcgidProcessLifetime, чтобы дать потоку больше времени для завершения.
Другой обходной путь - заставить сервер Apache работать под тем же UID, что и сценарий setuid. Это позволяет ему убить процесс, хотя это может быть нежелательно по соображениям безопасности. Точно так же запуск apache от имени пользователя root - тоже обходной путь, но не очень безопасный. Если вы это сделаете, обратите внимание, что ваш каталог sock fcgi (в / var / lib / apache2 / fcgid / sock или аналогичный) и файл таблицы процессов должны быть доступны для записи владельцем процесса apache.
Однако основная причина заключается в том, что сам сценарий CGI занимает слишком много времени. Причина этого зависит от кода CGI, который мне неизвестен.