Ограничить общее использование памяти PHP-FPM

Ограничить общее использование памяти PHP-FPM

Я запускаю PHP-FPM на своих серверах Debian. Мой вопрос касается использования памяти. Я могу задать memory_limit только внутри PHP, и он не должен быть слишком низким для некоторых запросов. Я также могу задать количество процессов только в PHP-FPM, и он также не должен быть слишком низким, поскольку я запускаю много запросов php.

В большинстве случаев процессы будут использовать только около 2-20 МБ. Лимит процессов составляет 512, так что это примерно 5-10 ГБ ОЗУ. Но поскольку некоторые скрипты php могут использовать гораздо больше памяти, максимально допустимый объем памяти составляет около 1 ТБ (512 процессов * 2048 МБ). И если что-то пойдет не так, Debian OOM Killer просто случайным образом завершит процессы.

Есть ли способ ограничить общее использование памяти для php-fpm? Например, жесткое ограничение, при котором php-fpm не будет создавать больше процессов, потому что у него закончилась вся оперативная память.

решение1

Несколько дней назад у меня была похожая проблема, когда пара мастеров php5-fpm породила слишком много процессов. OOM Killer очень помог, убив nginx.

В качестве решения я нашелcgroupмеханизм сподсистема памяти. Позволяет поместить все процессы FPM в 1 группу, которая ограничена, например, 60% системной оперативной памяти.

Отличная документация: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Using_Control_Groups.html

Связанный контент