Как остановить случайное изменение скорости в процессах FCGI
Так что получил ниже ранее в день...
Примерно в это же время в журналах показывается увеличение скорости процессов (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>
2 ответа
В Debian была ошибка (по крайней мере), которая делала ограничение бесполезным для виртуальных хостов. Это исправлено сейчас.
Это часто вызывается зависанием сценария CGI setuid; он превышает IOtimeout, и apache пытается его убить, но не может из-за изменения uid, что приводит к ошибке.
Возможно, вы захотите увеличить FcgidIOTimeout или FcgidProcessLifetime, чтобы у потока было больше времени для завершения.
Другой обходной путь - заставить сервер Apache работать под тем же UID, на который настроен скрипт setuid. Это позволяет завершить процесс, хотя это не рекомендуется по соображениям безопасности. Аналогично, запуск apache от имени root также является обходным путем, но не очень безопасным. Если вы сделаете это, обратите внимание, что ваш каталог sock fcgi (в /var/lib/apache2/fcgid/sock или аналогичный) и файл таблицы процесса должны быть доступны для записи владельцем процесса apache.
Основной причиной этого является то, что сам скрипт CGI занимает слишком много времени. Причина этого зависит от кода CGI, который я не вижу.