Apache Error AH00169: caught SIGTERM, shutting down — Причины остановки
Служба Apache внезапно прекращает работу или перезапускается без команды администратора. В системном журнале error.log регистрируется штатный сигнал завершения: [core:notice] [pid 1234] AH00169: caught SIGTERM, shutting down.
| Источник сигнала SIGTERM | Инициатор | Причина отправки сигнала |
|---|---|---|
| Linux OOM Killer | Ядро Linux (Kernel) | Критическая нехватка RAM, ядро принудительно гасит самый тяжелый процесс |
| Systemd Timeout / Watchdog | systemd | Apache не ответил на health check или завис при graceful reload |
Скрипт logrotate | Планировщик Cron | Некорректная команда перезагрузки при ночной ротации логов |
| Внешний мониторинг | Kubernetes / Docker | Сработал liveness probe failure, контейнер принудительно пересоздается |
- Веб-сервер перестает отвечать на запросы в определенное время суток (часто ночью при ротации логов).
- В
systemctl status apache2служба находится в статусеinactive (dead)илиactivating (auto-restart).
- Проверьте системный журнал ядра на предмет срабатывания Out Of Memory (OOM) Killer:
sudo dmesg -T | grep -i -E "killed process|oom_reaper|apache2|httpd" # Или через journalctl: sudo journalctl -k --grep="oom" - Если процесс был убит OOM Killer, оптимизируйте параметры MPM (уменьшите
MaxRequestWorkers) или добавьте Swap/RAM на сервер. - Проверьте скрипт ежедневной ротации журналов в
/etc/logrotate.d/apache2(или/etc/logrotate.d/httpd). Убедитесь, что для перезагрузки используется безопасный сигналreload(graceful), а не жесткийrestart:# ПРАВИЛЬНАЯ КОМАНДА В LOGROTATE: postrotate /usr/lib/apache2/apache2-maintscript-helper graceful-reload > /dev/null 2>&1 || true endscript - Проверьте статус службы в systemd и историю перезапусков:
sudo journalctl -u apache2.service --since "1 hour ago" - Если Apache работает в Docker/Kubernetes, увеличьте
initialDelaySecondsиtimeoutSecondsдля Liveness и Readiness проб в манифесте пода.
SIGTERM (15) — это стандартный сигнал операционной системы для корректного завершения процесса. Запись AH00169 означает, что Apache выполнил штатное выключение, получив прямой приказ на остановку от внешнего процесса или ядра ОС.Частые вопросы (FAQ)
В чем разница между SIGTERM и SIGKILL для Apache?
Получив SIGTERM, мастер-процесс Apache дает воркерам время дообработать текущие запросы, закрывает дескрипторы сокетов и удаляет свой PID-файл. Сигнал SIGKILL (9) уничтожает процесс мгновенно без очистки ресурсов.
Как узнать, какой именно процесс отправил сигнал SIGTERM?
Используйте подсистему аудита Linux Auditd: настройте правило sudo auditctl -a always,exit -F arch=b64 -S kill -k process_kills и анализируйте лог /var/log/audit/audit.log.
Почему Apache завершается по SIGTERM каждую ночь в 00:00 или 06:00?
В это время срабатывает системный cron-скрипт logrotate или unattended-upgrades (автообновление пакетов security).
Что такое graceful reload в Apache?
Это мягкая перезагрузка по сигналу SIGUSR1 (или graceful-stop по SIGWINCH), при которой старые воркеры дорабатывают запросы, а новые воркеры уже стартуют с обновленным конфигом без простоя сервиса.