Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH03490: scoreboard is full, not at MaxRequestWorkers Linux / DevOps

Apache Error AH03490: scoreboard is full, not at MaxRequestWorkers — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

Веб-сервер перестает принимать новые входящие подключения, несмотря на то, что текущее количество активных воркеров не достигло предела MaxRequestWorkers. В error.log появляется сообщение об исчерпании системной таблицы процессов: [mpm_event:error] [pid 1234:tid 5678] AH03490: scoreboard is full, not at MaxRequestWorkers. Consider raising the ServerLimit.

Состояние процессаСлот ScoreboardПричина блокировки слота
G (Graceful finishing)Заблокирован старым процессомПроцесс не может завершиться из-за зависшего Keep-Alive или долгого запроса
ServerLimitДостигнут аппаратный максимум слотовПараметр ServerLimit меньше, чем требуется для размещения новых воркеров
Новый форк процессаОтказ создания воркераScoreboard не имеет свободных ячеек для регистрации нового PID
  • Apache прекращает масштабирование процессов при резких скачках нагрузки.
  • Клиенты получают задержки соединения или отказ в обслуживании (Connection reset / Timeout).
  1. Проверьте текущее состояние таблицы процессов (Scoreboard) через модуль mod_status, перейдя по адресу http://127.0.0.1/server-status (или выполните apache2ctl fullstatus).
  2. Обратите внимание на количество процессов в статусе "G" (Gracefully finishing). Большое их количество означает, что старые воркеры не могут закрыться после команды graceful reload из-за зависших TCP-соединений.
  3. Уменьшите таймауты Keep-Alive и общие таймауты соединений в apache2.conf / httpd.conf:
    Timeout 30
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 3
  4. Увеличьте директиву ServerLimit в файле конфигурации вашего MPM (mpm_event.conf или mpm_worker.conf):
    <IfModule mpm_event_module>
        # ServerLimit должен быть больше, чем (MaxRequestWorkers / ThreadsPerChild)
        ServerLimit             32
        StartServers            4
        ThreadsPerChild         64
        MaxRequestWorkers       2048
        MaxConnectionsPerChild  10000
    </IfModule>
  5. ВАЖНО: Директива ServerLimit не может быть изменена через мягкий reload. Требуется полный перезапуск процесса Apache:
    sudo apache2ctl configtest && sudo systemctl restart apache2
Что такое Scoreboard в Apache: Scoreboard — это область разделяемой памяти (Shared Memory), в которой мастер-процесс отслеживает статус каждого дочернего процесса и потока. Ошибка AH03490 означает, что слоты таблицы заняты «умирающими» процессами, и Apache физически не может выделить ячейку для старта нового воркера.
Практический опыт инженера: Обязательно добавьте директиву `GracefulShutdownTimeout 30` в главный конфиг Apache 2.4. Это полностью предотвратит накопление зависших воркеров в статусе 'G' при частых деплоях и ночной ротации логов.

Частые вопросы (FAQ)

Почему при ошибке AH03490 Apache пишет 'not at MaxRequestWorkers'?

Потому что сумма активных рабочих потоков еще не достигла лимита MaxRequestWorkers, но таблица слотов процессов уже переполнена 'зависшими' процессами в стадии Graceful Shutdown.

Почему ServerLimit требует именно restart, а не reload?

ServerLimit определяет размер массива разделяемой памяти (Scoreboard), который выделяется ядром ОС строго один раз в момент старта главного мастер-процесса.

Как скрипты logrotate могут провоцировать AH03490?

Если logrotate вызывает graceful reload каждые несколько часов на сервере с долгими WebSocket или Keep-Alive сессиями, старые процессы накапливаются в статусе 'G', забивая Scoreboard.

Помогает ли директива GracefulShutdownTimeout?

Да! Установка GracefulShutdownTimeout 60 принудительно убивает зависшие процессы через 60 секунд после команды релоада, освобождая слоты Scoreboard.