Я запускаю Apache / 2.4.7 на m4 .larges в AWS за ELB. Подавляющая часть моего трафика - это простые разовые запросы от наивных клиентов, а не веб-страниц. Конфигурация устарела и проверена временем, но две недели назад я перенес развертывание на VPC без существенных изменений конфигурации Apache, конфигурации ELB или самого приложения.
С тех пор у меня возникло несколько проблем на уровне Apache и ELB.
1) Очень циклические всплески задержки - иногда доходящие до того, что ELB удаляет «нездоровые хосты». Графики задержки ELB обычно составляют около ~ 20 мс, но могут увеличиваться до 5 или более секунд в течение одной или двух минут. Отображаются длина очереди всплесков и 504 секунды.
2) На каждом сервере есть процесс мониторинга, который каждую минуту запрашивает страницу состояния сервера (она доступна только локальному хосту); примерно каждые пятнадцать минут тайм-аут этого простого запроса для страницы состояния сервера истекал (тайм-аут чтения 0,5 секунды, но этого более чем достаточно для такого простого запроса).
3) Табло заполняется живыми и пишет очень быстро. Пример табло во время одного из указанных выше тайм-аутов:
400 requests currently being processed, 0 idle workers
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKWKKKKKKKKKKKKKKKKKKKKKKKKKWKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKK
4) Котики также испытывают всплески в ВЫПОЛНЯЕМЫХ потоках, которые распространяются на весь уровень базы данных.
Хотя он имеет наименьшее влияние из всех, (2), возможно, меня больше всего беспокоит - кажется безумием, что Apache должен попасть в ситуацию, когда он даже не может обработать запрос своего собственного статуса, который даже не входит собственно приложение.
При всем этом оборудование относительно не нагружается - ЦП редко превышает 50% на веб-серверах. Это могло бы предположить, что это проблема конфигурации, связанная с потоками, но конфигурация осталась в основном постоянной, оставляя меня в недоумении.
Соответствующая конфигурация:
У ELB (где завершается SSL) время простоя составляет 60 секунд.
Каждый Apache настроен более или менее следующим образом:
Timeout 600
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 60
Я использую модуль mpm_worker с:
StartServers 2
MinSpareThreads 100
MaxSpareThreads 300
ThreadLimit 64
ThreadsPerChild 50
MaxRequestWorkers 400
MaxConnectionsPerChild 0
Сервлеты tomcat пересылаются через AJP, где каждый из них прослушивает 300 потоков, дополненных подключениями максимум 300 дБ.
Что в этой настройке является причиной моих проблем?