— Есть сервер, на котором, конвертируется видео, и выполняется туева хучу php-скриптов, отжирая переодически или в купе много памяти. Изза чего системе- нужные сервисы падают от нехватки памяти (sshd, httpd, nginx, postgresql, monit, syslog). Пару раз была panic'а
А теперь внимание вопрос:
— Чем контролировать? Как ограничивать — кол-во разрешаемой памяти на процесс? Как сделать так, чтобы при превышении лимита памяти, падал процесс съедающий, а не системе- нужные сервисы.
Подскажите а есть ли инструмент, управления всем этим? ulimit очень узкий, и расчитан на процессы создаваемые пользователем, а не системой.
К примеру *.php — 200mb памяти не смотря на то что 200mb уже установлено в php.ini.
И так далее.
> ulimit очень узкий, и расчитан на процессы создаваемые пользователем, а не системой.
Вы бы мануал хоть почитали. ulimit ограничения наследуются детьми процесса. Если у вас PHP работает внутри апача, ставьте ulimit на апач. ТЕМ БОЛЕЕ! в PHP ограничить память можно банально настройкой php.ini. Можно вместо беспорядочного запуска PHP-скриптов сделать диспетчер, который будет следить за их количеством. В общем, вариантов множество − было бы желание.
cgroups
cgroups (control groups) is a Linux kernel feature to limit, account and isolate resource usage (CPU, memory, disk I/O, etc.) of process groups.
Подскажите а есть ли инструмент, управления всем этим? ulimit очень узкий, и расчитан на процессы создаваемые пользователем, а не системой.
К примеру *.php — 200mb памяти не смотря на то что 200mb уже установлено в php.ini.
И так далее.
Есть такая штука как oom adjust, она контролирует то в каком порядке процессы будут убиваться. К сожалению по умолчанию этот механизм в большинстве случаев работает антилогично, убивая системные службы по паре мегабайт, вместо того чтобы убить процесс, который съел большую часть памяти.
В upstart и возможно systemd есть некоторые механизмы для использования этого параметра, но мне кажется что удобнее использовать один из доступных в интернете скриптов, которые вручную выставляют приоритеты процессам в системе на основе конфигов.