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