Назад | Перейти на главную страницу

Принудительно использовать nproc ulimit для неинтерактивного пользователя

У меня есть сценарий, который можно запускать n раз одновременно через php-fpm. Пул php-fpm настроен на запуск под определенным именем пользователя, и я хочу ограничить количество процессов, которые может запускать это имя пользователя.

ps aux|grep fpm
root     7165  0.0  0.0 849288 27872 ?  Ss 05:47   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
myuser   7167  4.6  0.1 872512 77148 ?  S  05:47   0:31 php-fpm: pool myapp  #pool I want to limit
www-data 7172  0.2  0.1 863248 62904 ?  S  05:47   0:01 php-fpm: pool www    #default pool

Вот так выглядит процесс, запущенный через php-fpm:

37192 myuser 20   0  347m  53m  10m S   13  0.1   0:00.38 php -f /var/www/html/myscript.php

Это на Ubuntu. Я установил в /etc/security/limits.conf:

myuser   soft    nproc           10
myuser   hard    nproc           10

а также включены session required pam_limits.so в /etc/pam.d/common-session-noninteractive но ограничения не действуют:

cat /proc/$(ps aux|grep "php -f /var/www/html/myscript"|awk '{print $2}'|head -n1)/limits

Limit                     Soft Limit           Hard Limit           Units
Max processes             385951               385951               processes

Если я su как пользователь, он работает:

su -s /bin/bash myuser

ulimit -u
10

Что дает?