#Что означает ошибка
server reached MaxRequestWorkers
Предел MaxRequestWorkers достигнут: Apache не может принимать новые соединения. Увеличьте значение с учётом памяти или оптимизируйте обработку запросов.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Малый лимит | Прочитайте относящуюся к этому компоненту запись в журнале до изменения конфигурации. | Увеличьте. |
| Медленные запросы | Прочитайте относящуюся к этому компоненту запись в журнале до изменения конфигурации. | Оптимизируйте. |
| Много соединений | Сравните работу через другую сеть; если сбой остаётся только в одной сети, проверьте её настройки и ограничения. | Ограничьте. |
| Мало памяти | Проверьте фактическое потребление памяти и наличие места для временных файлов в момент сбоя. | Рассчитайте. |
#Пошаговое решение
- Оцените память процессаАдминистратор сервера через SSH проверьте
apachectl -Vиapachectl -M | grep mpm, чтобы определить используемый MPM (event,workerилиprefork). Снимите показатели памяти процесса Apache под пиковой нагрузкой черезps -eo pid,rss,cmd | grep apacheи свободную RAMfree -h; для prefork один запрос может занимать отдельный процесс. - Увеличьте MaxRequestWorkersОткройте конфигурацию MPM, найдите действующий
MaxRequestWorkersи сравните с памятью, CPU, количеством потоков и лимитамиServerLimit/ThreadsPerChild. Повышайте предел только по расчёту для вашей модели MPM; слишком высокое значение может вызвать OOM и увеличить задержки. - Оптимизируйте скриптыПроверьте, почему процессы заняты: медленные PHP/CGI-обработчики, keep-alive, тяжелые запросы и атаки ботов. Используйте журналы запросов и
mod_status, ограничив доступ к нему доверенными IP; прежде чем увеличивать число рабочих потоков, устраните узкие места приложения. - Проверьте альтернативу: мало памятиПосле правки сохраните прежние значения, выполните
apachectl configtest, затем согласованный reload/restart согласно требованиям MPM и проверьте реальное число занятых потоков, RAM и отсутствие предупрежденийserver reached MaxRequestWorkers. Если в журнале появился OOM, немедленно верните прежний расчётный предел.
#Проверка результата
Для «Apache: server reached MaxRequestWorkers setting» выполните штатную проверку конфигурации, затем один контрольный запрос к сервису. Сверьте его результат с журналом и убедитесь, что пользователи не получили новых ответов 4xx или 5xx после изменения.