У меня давно запущен процесс в Debian. В какой-то момент выдается ошибка:
Слишком много открытых файлов.
Бег:
ulimit -a
шоу:
открыть файлы (-n) 1024
Я хочу увеличить количество открытых файлов в 2 раза. После исполнения
ulimit -n 2048
предел активен до конца моего сеанса, что неприменимо для задачи.
Как я могу навсегда увеличить количество открытых файлов?
источник
В ядре также установлен «общий максимум» открытых файлов, вы можете проверить текущие настройки с помощью:
И установите новое значение с помощью:
Если вы хотите сохранить конфигурацию между перезагрузками, добавьте
в
Чтобы проверить текущее максимальное использование файла:
источник
0
, это просто означает, что количество выделенных файловых дескрипторов точно соответствует количеству используемых файловых дескрипторов.49152 0 18446744073709551615
. Я не понимаю, почему первые два столбца не складываются в третий. И если у меня есть 1,8 триллиона триллионов, я не понимаю, как я использовал их все.Как уже говорили другие, вы можете применять определенные ограничения для каждого пользователя или группы в /etc/security/limits.conf.
Примечание: ulimit -n показывает мягкий предел.
покажет вам жесткий лимит.
Это делает вывод ulimit -a и ulimit -n довольно запутанным, если, например, вы увеличили количество файлов с 1024 до 4096, как вы ожидаете увидеть вывод с жестким ограничением, но вы по-прежнему видите 1024, который является программным предел.
Кроме того, помните, что эти ограничения применяются для каждого входа в систему, поэтому повторно войдите в новую оболочку и проверьте изменения, не ожидайте, что они будут распространены на существующие имена входа.
источник
Имейте в виду, что если вы запустите ваш процесс с помощью start-stop-daemon, настройка ulimits в /etc/security/limits.conf не будет работать. Если вы, например, хотите увеличить лимит открытого файла для tomcat до 20000, вам нужно добавить их в строки
/etc/default/tomcat
:Я столкнулся с этой проблемой в Debian 6.0.4. Для других процессов ответы должны помочь.
источник
Это зависит от того, как вы начинаете свой длительный процесс. Если он запускается во время загрузки (с помощью скриптов /etc/rcX.d/*), то вы должны поместить в свой сценарий запуска вызов ulimit, так как ограничение по умолчанию установлено ядром, и оно не настраивается без перекомпиляции.
Использование
/etc/security/limits.conf
может работать, если вы используете егоcron
для запуска, например, с такой записи:Это должно работать, потому что /etc/pam.d/cron включает pam_limits.so.
источник
Вы можете добавить это в /etc/security/limits.conf
сохраните и перезагрузите компьютер.
источник
Очень хорошая команда,
ulimit -n
но есть проблема со слишком большим количеством соединений и слишком большим количеством открытых файлов:источник
ulimit -a
, а неulimit -n
.