Замечу, что я не сисадмин. Вы очень скоро это поймете. :)
В двух словах: Apache делает передышку во время больших нагрузок, и все процессы простаивают. Это сервер опроса, который используется приложениями. Опросы проводятся много разных конечных точек. Время от времени (каждые 4-5 минут), если я смотрю вверху, процессы HTTPD одновременно простаивают, задерживая трафик на 10 секунд или около того. Затем он восстанавливается. Задержка проблематична.
Журналы Apache
Иногда, но не всегда (в основном после перезагрузки) я получаю эти сообщения в error_log. В большинстве случаев, когда это происходит, я ничего не вижу в error_log.
[Mon Jun 30 17:55:17 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 31 idle, and 98 total children [Mon Jun 30 17:55:18 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 16 children, there are 14 idle, and 98 total children [Mon Jun 30 17:55:44 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 74 idle, and 99 total children [Mon Jun 30 17:55:54 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 61 idle, and 99 total children [Mon Jun 30 17:56:00 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 0 idle, and 97 total children [Mon Jun 30 17:56:02 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 16 children, there are 36 idle, and 99 total children [Mon Jun 30 17:56:03 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 32 children, there are 39 idle, and 99 total children [Mon Jun 30 18:08:17 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 8 children, there are 18 idle, and 99 total children [Mon Jun 30 18:08:18 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 16 children, there are 63 idle, and 98 total children [Mon Jun 30 18:08:19 2014] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 32 children, there are 74 idle, and 97 total children
Конфигурация Apache (старая конфигурация закомментирована)
просто показывать элементы конфигурации, которые, как я подозреваю, актуальны
#Timeout 60 Timeout 20 KeepAlive on MaxKeepAliveRequests 1000 KeepAliveTimeout 2 IfModule prefork.c StartServers 85 MinSpareServers 85 MaxSpareServers 100 ServerLimit 100 MaxClients 100 #StartServers 60 #MinSpareServers 60 #MaxSpareServers 85 #ServerLimit 85 #MaxClients 85 MaxRequestsPerChild 1000 /IfModule
Обратите внимание, что нет разницы в поведении старых и новых конфигураций.
Окружающая среда EC2, c1.medium, mod_perl, постоянные соединения с базой данных, отдельный сервер RDS, ошибки не отображаются в журналах ошибок MySQL и ошибки не отображаются в журналах Apache
Кстати, я видел предложения по установке mod-status, но я не понял, как это сделать, и не знаю, что искать, если я это сделаю.
Тайна раскрыта.
В случае, если это произойдет с кем-либо еще: сетевое соединение (внутри VPC через интерфейс LAN) между Apache и сервером базы данных было перегружено. Обновление сервера базы данных до более крупного экземпляра решило проблему (на данный момент).
Справочная информация: Amazon каждые 5 минут делает снимки вашей базы данных для функции восстановления на определенный момент времени. Для этого он загружает двоичный журнал в ваш экземпляр RDS.
Каждые 5 минут двоичный журнал передается (предположительно в другой EBS), и в моем случае эта передача перегружала интерфейс LAN. Apache зависает, ожидая сетевого подключения каждые пять минут, и соединения накапливаются, а некоторые в конечном итоге прерываются.
Я бы установил MaxClients примерно до 200 ...
Кроме того, мне любопытно, почему минимальные и максимальные резервные серверы так высоки. Я бы, вероятно, установил MinSpareServers примерно на 20, а MaxSpareServers примерно на 30. Это количество практически незанятых процессов, которые остаются, apache будет создавать больше по мере необходимости до настройки MaxClients и уменьшать количество резервных процессов по мере необходимости. уменьшается.
Наконец, почему вы изначально создаете так много начальных серверов. Я бы начал с чего-то вроде установки StartServers примерно на 50.
У меня была такая же проблема, оказалось, что это было вызвано уменьшенным масштабом экземпляра RDS. ЦП и память всегда были ниже 15%, поэтому я не стал его обновлять, пока не прочитал ответ OP.
Изменение экземпляра RDS с t2.micro на t2.medium решило мою проблему.
Было действительно сложно устранить неполадки, потому что это не так очевидно из статистики экземпляра, единственное, что я мог заметить, - это небольшие пики на графиках пропускной способности ввода и вывода.