Мой вопрос довольно простой и фактически изложен в заголовке. Одно из моих приложений выдает ошибку, касающуюся «слишком большого количества открытых файлов», даже несмотря на то, что лимит для пользователя, с которым работает приложение, превышает значение по умолчанию 1024 (lsof -u $ USER сообщает о 3000 открытых файловых хранилищах).
Поскольку я не могу представить, почему это происходит, я предполагаю, что для каждого процесса может быть максимум.
Любая идея очень ценится!
Изменить: некоторые значения, которые могут помочь ...
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
Да, ulimit
средство ограничивает количество открытых файлов и многое другое, например размер стека, размер дампа ядра и т. д.
Вы можете найти предел для процесса с pid в /proc/<pid>/limits
и есть запись Max open files
.
Вы можете найти некоторые ограничения для каждого процесса в /etc/systemd/system.conf