Существует ли максимум открытых файлов на процесс в Linux?
Мой вопрос довольно прост и фактически указан в заголовке. Одно из моих приложений выдает мне ошибки, связанные с "слишком большим количеством открытых файлов", даже если для пользователя, с которым запускается приложение, ограничение превышает значение по умолчанию, равное 1024 (lsof -u $USER сообщает о 3000 открытых fds).
Поскольку я не могу себе представить, почему это происходит, я думаю, что может быть максимум на процесс.
Любая идея очень ценится!
Изменить: некоторые значения, которые могут помочь...
root@Debian-60-squeeze-64-minimal ~ # ulimit -n
100000
root@Debian-60-squeeze-64-minimal ~ # tail -n 4 /etc/security/limits.conf
myapp soft nofile 100000
myapp hard nofile 1000000
root soft nofile 100000
root hard nofile 1000000
root@Debian-60-squeeze-64-minimal ~ # lsof -n -u myapp | wc -l
2708
2 ответа
Вы можете найти предел для процесса с pid в /proc/<pid>/limits
и есть запись Max open files
,
Да, ulimit
средство ограничивает количество открытых файлов и многие другие вещи, такие как размер стека, размер дампа ядра и т. д.
Вы можете найти некоторые ограничения для каждого процесса в /etc/systemd/system.conf