Я запускаю сервер CentOS 5.3 с базовым стеком LAMP. Я оптимизировал LAMP и свой код для максимально эффективной работы, но в Apache где-то есть утечка памяти, которая убивает мой сервер каждый час или около того. Как лучше всего написать сценарий, который будет отслеживать использование памяти и, если он превысит, скажем, 450 МБ, убить все процессы Apache и перезапустить Apache. Я знаю C ++ / PHP и основы администрирования серверов Linux, но не знаком с Perl или сценариями bash. Я был бы открыт для изучения любых решений в качестве временного решения, пока я найду проблему.
Монит это простая утилита для мониторинга серверов, которая может делать подобные вещи.
Попробуйте установить MaxRequestsPerChild
переменная в Apache, что заставит его убить и запустить своих дочерних элементов после того, как они обработали указанное количество запросов. В mod_php это может быть всего 100.
Известно, что PHP (особенно mod_php) делает это. Альтернативы включают запуск PHP под FastCGI, что предотвратит перезапуск Apache и перезапустит только интерпретаторы PHP.
Вы также должны убедиться, что у вас всегда есть доступная оперативная память. Если это означает, что будет работать меньше вилок Apache, пусть будет так. Прижать ServerLimit