Apache MaxRequestWorkers проблема не решена

Мой сайт генерирует, когда я пытаюсь выполнить 1000 запросов в секунду. Я вижу следующие ошибки в моих журналах apache

Apr 06 00:00:33 ns503772******100.net httpd[9585]: AH00515: WARNING: MaxRequestWorkers of 2000 would require 80 servers and
Apr 06 00:00:33 ns503772******100.net httpd[9585]: would exceed ServerLimit of 16, decreasing to 400.
Apr 06 00:00:33 ns503772******100.net httpd[9585]: To increase, please see the ServerLimit directive.

Моя текущая настройка была следующей

<IfModule mpm_event_module>
LoadModule cgid_module modules/mod_cgid.so
MaxRequestWorkers 2000
</IfModule>

Я использую Plesk Onyx и спецификации сервера следующие.

Процессор: Intel Xeon E5-1620v2 - 4c/8t - 3,7 ГГц /3,9 ГГц

Север Рам: 64 ГБ DDR3

Тогда я попробовал следующие настройки

<IfModule mpm_event_module>
StartServers                80
MinSpareThreads             50
MaxSpareThreads             300

ThreadLimit                 25
ThreadsPerChild             25

ServerLimit                 500
MaxRequestWorkers           2000
MaxConnectionsPerChild      0
</IfModule>

но проблема остается нерешенной, инфаркт вызывает больше ошибок, и ведущий записи журнала начинает жрать процессор

вывод httpd -V | grep -i 'version\|mpm' является следующее

Server version: Apache/2.4.6 (CentOS)
Server MPM:     event

1 ответ

Решение

ServerLimit не определен / не прочитан, но все же это значение, которое вы хотите использовать, не имеет смысла, так как потоки для каждого дочернего элемента уже устанавливают ограничение сервера равным 80.

И почему вы используете такое небольшое количество потоков? Вы генерируете слишком много дочерних процессов без необходимости, вероятно, делая Apache менее производительным в процессе (процессы порождения дороже, чем потоки)

Примечание. Настройки MPM требуют ПОЛНОЙ ОСТАНОВКИ / СТАРТА (не перезапуска).

Установите это.

StartServers 1
ServerLimit 4
MinSpareThreads 500
MaxSpareThreads 1500
MaxRequestWorkers 2000
ThreadsPerChild 500
ThreadLimit 500
MaxConnectionsPerChild 0
MaxKeepAliveRequests 1500
KeepAlive On
KeepAliveTimeout 10

И убедитесь, что вы сделали полную остановку, а затем приступите к изменениям, которые будут применены по-настоящему.

Другие вопросы по тегам