Назад | Перейти на главную страницу

Что означает «AH00485: табло заполнено, а не MaxRequestWorkers»?

Моя среда

Интересные переменные

    <IfModule mpm_event_module>
        StartServers             2
        ThreadLimit             196
        MinSpareThreads         96
        MaxSpareThreads        192
        ThreadsPerChild         96
        MaxRequestWorkers      192
        MaxConnectionsPerChild   96
    </IfModule>

Статус сервера Apache

Версия сервера: Apache / 2.2.4 (Unix) OpenSSL / 1.0.1e mod_fastcgi / mod-fastcgi-SNAP-0910052141
Сервер построен: 24 мая 2013 г., 16:48:07


Текущее время: понедельник, 17 июня 2013 г., 09:48:11 COT
Время перезапуска: понедельник, 17 июня 2013 г., 08:35:14 COT
Конфигурация родительского сервера. Поколение: 1
Генерация MPM родительского сервера: 0
Время работы сервера: 1 час 12 минут 57 секунд
Загрузка сервера: 0,05 0,10 0,09
Всего обращений: 14144 - Общий трафик: 349,7 МБ
Использование ЦП: u.28 s.25 cu0 cs0 - 0,0121% загрузка ЦП
3,23 запроса / с - 81,8 кБ / с - 25,3 кБ / запрос
1 запрос обрабатывается, 191 неработающий работник

  PID | Connections       | Threads     | Async connections
      | total | accepting | busy | idle | keep-alive | closing
  ==============================================================
18997 | 3     | yes       | 1    | 95   | 0          | 3
18485 | 0     | yes       | 0    | 96   | 0          | 0
  ==============================================================
Sum   | 3     |           | 1    | 191  | 0          | 3

Журнал ошибок

Сообщение об ошибке

[Пн, 17 июня, 09:32: 45.680842 2013] [mpm_event: error] [pid 8574: tid 140185091581760] AH00485: табло заполнено, не в MaxRequestWorkers

Это появляется каждые несколько секунд. Я этого не понимаю. Как я могу это исправить?

У нас была такая же проблема на Apache 2.4.6. После наблюдения за сервером и настройки параметров в течение нескольких часов нам кажется, что в Apache может быть ошибка. Похоже, что серверные процессы иногда попадают в G состояние (изящно завершено) и перезапускается для приема новых запросов, это нормально. Что ненормально, так это то, что по какой-то причине перезапуск может занять до нескольких минут. Если у вас работает всего несколько серверных процессов, и все они входят в G состояние в то же время, ваше табло заполняется, и вы больше не сможете отправлять запросы.

Мы увеличили количество серверов, чтобы было меньше шансов, что они все войдут в G состояние в то же время. Также убедитесь, что вы выделяете не менее 25 потоков (MaxRequestWorkers) для каждого серверного процесса, потому что это, по-видимому, значение по умолчанию (т.е. если 5 Servers х 25 ThreadsPerChild = 125 MaxRequestWorkers). Ты можешь измениться ThreadsPerChild если хотите, мы оставили значение по умолчанию. Если вы не выделите достаточно потоков, дополнительные серверы не запустятся. Мы ушли MinSpareThreads со значением по умолчанию, равным 25, и значением по умолчанию для MaxSpareThreads что составляет 75. Если вы измените эти параметры, значение для MaxSpareThreads должно быть больше или равно сумме MinSpareThreads и ThreadsPerChild. Также MaxRequestWorkers должно быть равно или меньше ServerLimit.

Вот что сработало для нас, но, возможно, это не лучшая конфигурация для вас.

StartServers 3
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAlive Off

Изменить: это подтверждено ошибка в модуле httpd mpm_event, который не может быть исправлен с помощью конфигурации.
Связанный баг трекер В записи есть предполагаемый патч и более подробное обсуждение того, как исправить это, пока не будет официально выпущена новая версия модуля событий.

Видя ту же проблему.

Apache 2.4.7-1ubuntu4.4 on Ubuntu 14.04
Server Version: Apache/2.4.7 (Ubuntu)
Server MPM: event
Server Built: Mar 10 2015 13:05:59 

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

Затем мы видим пару старых процессов, которые не останавливаются:

root     28192  0.0  0.8 103772  8648 ?        Ss   Mar16   0:03 /usr/sbin/apache2 -k start
www-data  2530  0.3  2.1 865188 21516 ?        Sl   06:26   0:54  \_ /usr/sbin/apache2 -k start
www-data  2531  0.2  2.1 865436 21892 ?        Sl   06:26   0:51  \_ /usr/sbin/apache2 -k start
www-data  3299  0.3  2.0 864140 20628 ?        Sl   06:46   0:51  \_ /usr/sbin/apache2 -k start
www-data  7305  0.3  2.1 865100 21504 ?        Sl   08:36   0:37  \_ /usr/sbin/apache2 -k start
www-data 11952  0.2  1.8 863004 19268 ?        Sl   10:46   0:06  \_ /usr/sbin/apache2 -k start
www-data 13284  0.0  0.6 103772  6692 ?        S    11:18   0:00  \_ /usr/sbin/apache2 -k start
www-data 13553  2.1  2.0 866156 21248 ?        Sl   11:23   0:01  \_ /usr/sbin/apache2 -k start

Обратите внимание на «старые» и «новые» PID и время начала. ^^

PID Connections     Threads Async connections
total   accepting   busy    idle    writing keep-alive  closing
7305    14  no  0   0   0   0   0
2530    13  no  0   0   0   0   0
3299    7   no  0   0   0   0   0
13553   65  no  17  8   0   25  25
2531    15  no  0   0   0   0   0
11952   10  no  0   0   0   0   0
Sum 124     17  8   0   25  25

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGW_WWWW__W_W_W_WWWWWWW__WWGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGG

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

Вероятно, это не обычный случай, но я отправляю это в каноник в надежде, что это поможет другим, увидевшим эту ошибку.