Как отследить падение Апача и перезапустить его?

Дано: вебсайт, обслуживается Апачом с PHP, подключенным как его модуль. Несколько раз в течение дня, в произвольное время, запускается тяжёлый скрипт. После него, соответственно, остаётся экземпляр Апача, отожравший много памяти. Для простоты иллюстрации будем считать, что "обычный" экземпляр весит 20 Мб, а "тяжёлый" весит 2 Гб. Для освобождения памяти в крон поставлен простой скрипт, который проверяет, нет ли "тяжёлых" Апачей, и, если есть, даёт команду на мягкую перезагрузку:
systemctl reload httpd.service
Всё был хорошо, но обнаружилась другая проблема: примерно раз в полгода мастер-процесс Апача зависает, и "systemctl reload" приводит к его падению. К сожалению, я не озаботился сохранить точное сообщение об ошибке.
Вопрос: можно ли как-то отследить и устранить эту проблему?

На всякий случай, что можно делать:
  • дополнить скрипт в кроне,
  • заменить скрипт в кроне на таймер systemd
  • добавлять в систему другое ПО (в разумном объеме) и юниты systemd

что нельзя делать: заменить связку "Апач и PHP как модуль" на что-то иное ( например, PHP-FPM решил бы проблему).
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@q2digger
никого не трогаю, починяю примус
monit
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Файл /usr/lib/systemd/system/httpd.service: Restart=on-failure
И конечно разумеется: systemctl daemon-reload
Ответ написан
AshBlade
@AshBlade
Просто хочу быть счастливым
В настройках Apache можно выставить ограничение на память и время выполнения - https://stackoverflow.com/a/24933004
Ответ написан
@Drno
Если не критично - рестарт в крон каждую ночь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы