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

Конфигурация Logrotate для httpd (CentOS)

Я запускаю Apache 2.2.3 на CentOS 5.5 и только что заметил следующую конфигурацию postrotate logrotate в /etc/logrotate.d/httpd:

postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript

Поскольку он настроен на запуск один раз в неделю, он выполняет жесткую перезагрузку Apache, которая, по-видимому, убивает все соединения (верно? Я не эксперт). Будет ли безопаснее вместо этого изменить сценарий postrotate на плавный перезапуск?

/usr/sbin/apachectl graceful > /dev/null

Это постротационное поведение, которое у меня уже есть для моих виртуальных хостов. Я не понимаю, почему скриптам httpd rotate требуется жесткая перезагрузка.

Мы будем очень благодарны за любые советы о том, как правильно это настроить.

Спасибо, Ральф

Исходный ответ неверен. Initscript "reload" просто передает команду reload в apachectl. При перезагрузке на httpd отправляется сигнал SIGHUP, который немедленно завершает дочерние процессы и делает прерывание подключенных в данный момент клиентов: http://httpd.apache.org/docs/current/stopping.html#hup

См. Сообщение об ошибке в пакете httpd RHEL: https://bugzilla.redhat.com/show_bug.cgi?id=480624

Причина, по которой изящный не используется в сценарии logrotate, заключается в том, что нет возможности гарантировать остановку дочерних процессов: http://httpd.apache.org/docs/current/stopping.html#graceful

Нет, команда '/ sbin / service httpd reload' не уничтожает все соединения, поскольку она не инициирует «жесткий перезапуск». CentOS запускает Apache через службу, другие ОС - через сценарии инициализации. Для всех из них перезагрузка означает плавный перезапуск / отправку Apache сигнала USR1:

«Сигнал USR1 или изящный сигнал заставляет родительский процесс посоветовать дочерним процессам выйти после их текущего запроса (или немедленно выйти, если они ничего не обслуживают). Родитель повторно считывает свои файлы конфигурации и повторно открывает свои файлы журналов. По мере того, как каждый дочерний элемент умирает, родитель заменяет его дочерним элементом из нового поколения конфигурации, который немедленно начинает обслуживать новые запросы ".