Высокий CPU mod_fcgid: не может применяться слот процесса

Я получаю следующее предупреждение:

mod_fcgid: не может применяться слот процесса для /Вар/WWW/CGI-BIN/cgi_wrapper/cgi_wrapper

Как только появляется это предупреждение, серверный процессор поднимается до 97% - 101%

Сервер ежедневно просматривает просмотры страниц в 140K. Это предупреждение появляется в основном около 11: 00-12: 00 Помимо просмотров страниц 140K, рассчитанных Analytics, он также делает запросы с сторонних веб-сайтов, которые отображают текстовое объявление на своем веб-сайте. Около 2700 веб-сайтов отображают одно объявление и делают в общей сложности 22139 запросов в час вместе с сервером.

Я пробовал: chmod 755 /var/log/httpd, но в каталоге /var/log

нет папки "httpd"

Я попытался настроить MaxSpareServers и MaxClients на любые возможные высокие значения. Но не влияет вообще. После перезапуска Apache это выглядит нормально на некоторое время (сервер по-прежнему мало реагирует, и предупреждения больше не отображаются в файле журнала). Но через некоторое время появляется такое же предупреждение, и процессор снова поднимается.

Если у кого-то есть предложения, пожалуйста, дайте мне знать, спасибо всем.

Ответ 1

Это предупреждение сообщает вам, что пул процессов FastCGI исчерпан, и он имеет глобальный предел FcgidMaxProcesses и предел для > FcgidMaxProcessesPerClass (см. http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxprocesses).

Размер этого пула может быть настроен со следующей информацией:

  • в случае, когда ваше приложение связано с ЦП и вы не хотите его замедлять, вы установите FcgidMaxProcesses на количество ядер процессора на вашем сервере; средняя загрузка сервера будет иметь тенденцию к этому числу в часы пик. Ваш сервер будет обслуживать клиентов без каких-либо замедлений, но также отклонит некоторые запросы, чтобы не отставать. Отклонения регистрируются "не могут применяться слот процесса" на стороне сервера и рассматриваются как 503 ошибки на стороне клиента.
  • в (общем) случае, когда ваше приложение не полностью привязано к ЦП, например, он ожидает, что количество ошибок в его сервере базы данных для ответов (или других I/O или удаленных ресурсов), возможно, FcgidMaxProcesses немного выше, чем вашего количества ядер процессора. Как правило, я начинаю с удвоенного количества ядер процессора, а затем проверяю максимальную среднюю нагрузку на целый день (лучше на неделю). Затем отрегулируйте, пока он не достигнет максимума в среднем. load = количество ядер процессора.

В любом случае значение FcgidMaxProcesses (1000) по умолчанию является возмутительным. Вы запускаете немой 'ab -c100 -n10000

Чтобы быть уверенным, позвольте мне сказать это по-другому: ошибка "не может применяться к процессу" - это обычная ошибка, потому что ваш сервер имеет фиксированное количество ресурсов, и эти ограничения могут быть удалены. Если вы нажмете этот предел на высокий уровень. к вашим ресурсам сервера, предупреждение, возможно, никогда не появится снова, но ваш сервер будет рушиться под нагрузкой.

И BTW, MaxSpareServers и MaxClients не связаны с вашей проблемой, они регулируют пул процессов Apache, а не пул процессов FastCGI. это еще одна тема.