У меня есть сценарий, который можно запускать 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
Что дает?