У меня есть несколько сайтов Wordpress, работающих на Apache 2.4.7 / Ubuntu 14.04.2 LTS. Это виртуальная машина, работающая в Microsoft Azure. Веб-сайты используют сервер MySQL, также работающий на той же машине. Время от времени веб-сайты перестают отвечать, и необходимо перезапустить Apache. Исследование журнала ошибок (/var/log/apache2/error.log
) выявляет следующую ошибку:
[mpm_prefork:error] [pid 5761] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
Вот содержимое файла конфигурации Apache (/etc/apache2/mods-enabled/mpm_prefork.conf
)
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 256
MaxConnectionsPerChild 1000
</IfModule>
Я поднял MaxRequestWorkers
до максимально допустимого числа (256), но это все еще продолжается. Я попытался изменить настройку MaxConnectionsPerChild
, но, похоже, она тоже не дает никакого эффекта. Иногда сайты работают отлично в течение нескольких недель, иногда Apache отключается через день. Иногда процесс MySQL также перестает работать и должен быть перезапущен.
Что еще я должен проверять?
Иногда мы получаем немного более высокую нагрузку на веб-сайты - может ли это вызвать проблему? Что еще более важно, означает ли это, что нам нужно иметь доступную память, иначе веб-сервер аварийно завершит работу? то есть что-нибудь нужно сделать для обеспечения отказоустойчивости, независимо от того, сколько запросов получает веб-сервер?