Мой веб-сайт генерируется, когда я пытался выполнить на нем 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
И обязательно сделайте полную остановку, а затем начните, чтобы изменения вступили в силу.