Я понял.
На некоторых ядрах (например. 2.6.32+ ), по крайней мере, в CentOS/RHEL вы можете изменить ограничения ресурсов запущенного процесса, используя /proc/
, например.:
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
Чтобы изменить максимальное количество открытых файлов на мягкое ограничение 4096, жесткое ограничение 8192:
echo -n "Max open files=4096:8192" > /proc/23052/limits
Это дает:
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 4096 8192 files
Обратите внимание на -n
в echo -n
-, без этого вы получите ошибку " invalid argument
".
Другой вариант — команда prlimit
, введенная вместе с util-linux 2.21
, позволяет читать и изменять ограничения запущенных процессов.
Это продолжение доступного для записи /proc/
, которое не было интегрировано в основное ядро. Это решение должно работать.
$ prlimit --nofile --output RESOURCE,SOFT,HARD --pid 23052
RESOURCE SOFT HARD
NOFILE 1024 4096
Установите пределы:
$ prlimit --nofile=4096:8192 --pid 23052
Подтвердить:
$ prlimit --nofile --output RESOURCE,SOFT,HARD --pid 23052RESOURCE SOFT HARD
NOFILE 4096 8192
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 4096 8192 files