Назад | Перейти на главную страницу

Проблема с 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 ГГц

Sever Ram: 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

ServerLimit не определен / не читается, но все же это значение, которое вы хотите попробовать, не имеет смысла, поскольку потоки для каждого ребенка уже заставляют 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

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