Apache: “Сервер кажется занятым”, но много неактивных процессов

Я должен отметить, что я не системный администратор. Вы поймете это очень вскоре.:)

Вкратце: Apache продолжает брать передышку во время больших нагрузок, и все процессы идут неактивные. Это - сервер опроса, который используется приложениями. Опросы прибывают из большого количества различных конечных точек. Время от времени (каждые 4-5 минут), если я наблюдаю вершину, процессы HTTPD идут неактивные все одновременно, останавливая трафик в течение 10 секунд или около этого. Это затем восстанавливается. Задержка проблематична.

  • Сервер служит большому трафику. Это опросы приложения через HTTPS, не веб-страницы (хотя я сомневаюсь, что Apache знает различие),
  • Паузы отметили выше причины трафик для становления кривыми: через какое-то время я получаю ЦЕЛЫЙ НАБОР ТРАФИКА, затем затишье, затем ЦЕЛЫЙ НАБОР ТРАФИКА снова
  • Каждый опрос требует маленького падения базы данных

Журналы 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

Как в стороне, я видел предложения для установки ультрасовременного состояния, но я не выяснил, как сделать так, и я не знаю, что искать, если я делаю.

1
задан 30 June 2014 в 22:10
3 ответа

Тайна решена.

В случае, если это случится с кем-то еще: Сетевое соединение (внутри VPC через LAN-интерфейс) между Apache и сервером баз данных было перегружено. Обновление сервера баз данных в более крупную инстанцию решило проблему (на данный момент)

Background: Amazon делает снимки вашей базы данных каждые 5 минут для своей функции восстановления на определенный момент времени. Для этого он загружает двоичный журнал на вашем экземпляре RDS.

Каждые 5 минут двоичный журнал передается (предположительно на другую EBS), и в моем случае эта передача перегружает интерфейс LAN. Apache останавливается, пока он ждет сетевого соединения каждые пять минут, и соединения накапливаются, а некоторые, в конечном счете, прерываются

.
4
ответ дан 3 December 2019 в 17:07

Я увеличил MaxClients до 200...

. Также мне любопытно, почему запасные серверы Min и Max так высоки. Я бы, вероятно, установил MinSpareServers на что-то около 20, а MaxSpareServers на что-то около 30. Это количество в основном простаивающих процессов, которые остаются, apache будет создавать больше по мере необходимости до настройки MaxClients и уменьшать количество свободных процессов по мере того, как спрос снижается.

Наконец, почему вы изначально создаете так много исходных серверов. Я бы начал с чего-то вроде установки StartServers примерно на 50.

.
1
ответ дан 3 December 2019 в 17:07

У меня была такая же проблема, оказалось, что она была вызвана наличием уменьшенного экземпляра RDS. ЦП и память всегда были ниже 15%, поэтому я не стал обновлять его до тех пор, пока не прочитал ответ OP.

Изменение экземпляра RDS с t2.micro на t2.medium решило мою проблему.

Это было действительно сложно. устранение неполадок, поскольку это не так очевидно из статистики экземпляра, единственное, что я мог заметить, это небольшие пики на графиках пропускной способности ввода и вывода.

0
ответ дан 3 December 2019 в 17:07

Теги

Похожие вопросы