Apache2 prefork — контроль над Индейцем?

Вопрощаю всех столкнувщихся или же когда то попадавших в ситуацию, подобно моей:


— Сервер Gentoo_x64

— Apache_mpm_prefork


Регулярно убивает всю память и превыщает LA. Адекватно отследить вообще не получается, моментально LA3 > LA9 и все! Железный ресет только помогает.


— Как отследить?

— Чем или как ограничить возможности Индейца, к примеру если процесс больше 1 гига, чтобы система валила такой процесс?

— Подскажите софт для записи системных счетчиков, к примеру слежка за процессами которые жрут память (Имя процесса, время)


Огромне всем спасибо. Устал уже бороться с нестабильностью и костылями. Любой возможной информации буду рад.
  • Вопрос задан
  • 3786 просмотров
Пригласить эксперта
Ответы на вопрос 6
Как уже написали выше — поставьте ограничение на кол-во worker-ов апача, ну а перед апачем — nginx. Настройте чтоб всю статику отдавал именно он, к апачу пускал только динамику.
Ответ написан
kotomyava
@kotomyava
Системный администратор
Банально настроить максимальное количество «деток», согласно вашим ресурсам.
Если у вас разрастается сами процессы, что вряд-ли — надо искать причину, т.к. это не нормально, и надо не городить костыли, а решать проблему.

По поводу мониторинга и процессов по ресурсам/наличию/работоспособности, и их запуска/перезапуска/алертов, посмотрите monit, но это надо делать не вместо решения проблемы, а как «вариант на всякий случай» для повышения надёжности.
Ответ написан
Nastradamus
@Nastradamus
MaxRequestsPerChild поставить 1 и посмотреть что будет. Потом поднять до 10 или выше (исходя из ситуации), если поможет.

Дело в том, что размер воркера равен размеру самой крупной задачи, когда-либо им выполняемой. И размер этот не уменьшается при отработки последующих задач влодь до убивания по MaxRequestsPerChild.
Ответ написан
@bdmalex
На мой взгляд стоит смотреть в сторону скриптов, которые отжирают много памяти и заняться их оптимизацией
Ответ написан
Комментировать
AnViar
@AnViar
Отследить: написать самому скрипты или использовать готовые, например
Ограничить: самый прямой способ ограничить процесс по памяти — виртуализация. Рассмотрите openvz, xen, kvm. Можно так же поиграться с limits.conf на уровне пользователя.
Ответ написан
@BasilioCat
Может быть вам и не нужен апач вовсе? Python/Django и Ruby/Rails отлично работают как FastCGI серверы, запросы к которым можно пробросить напрямую из Nginx. PHP-FPM — и подавно. Perl/CGI и Perl/mod_perl используются теперь редко, тут да, без апача никуда. Хотя для простого CGI есть и более легковесные сервера. Если у вас не массовый хостинг для клиентов, а несколько сайтов для себя, возможно одного nginx'а вполне хватит
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы