При запуске моего приложения я иногда получаю сообщение об ошибке too many files open.
Запуск ulimit -aотчетов о том, что лимит составляет 1024. Как мне увеличить лимит выше 1024?
Редактировать
ulimit -n 2048 результаты в ошибке разрешения.
При запуске моего приложения я иногда получаю сообщение об ошибке too many files open.
Запуск ulimit -aотчетов о том, что лимит составляет 1024. Как мне увеличить лимит выше 1024?
Редактировать
ulimit -n 2048 результаты в ошибке разрешения.
Ответы:
Вы всегда можете попробовать сделать ulimit -n 2048. Это только сбросит лимит для вашей текущей оболочки, и указанное вами число не должно превышать жесткий лимит.
Каждая операционная система имеет различные жесткие ограничения в файле конфигурации. Например, ограничение на количество открытых файлов в Solaris может быть установлено при загрузке из / etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
В OS X эти же данные должны быть установлены в /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
В Linux эти настройки часто находятся в /etc/security/limits.conf.
Есть два вида ограничений:
Мягкие ограничения могут быть установлены любым пользователем, в то время как жесткие ограничения могут быть изменены только пользователем root. Лимиты являются свойством процесса. Они наследуются при создании дочернего процесса, поэтому общесистемные ограничения должны быть установлены во время инициализации системы в сценариях инициализации, а пользовательские ограничения должны быть установлены при входе пользователя, например, с помощью pam_limits.
При загрузке машины часто устанавливаются значения по умолчанию. Таким образом, даже если вы можете сбросить ваш ulimit в отдельной оболочке, вы можете обнаружить, что при перезагрузке он возвращается к предыдущему значению. Вы можете использовать свои загрузочные сценарии для команд существования ulimit, если хотите изменить значение по умолчанию.
ulimit. Вы должны указать, что вы используете (например, WSL, Cygwin).
Если вы используете Linux и получили ошибку разрешения, вам нужно будет увеличить допустимый предел в файле /etc/limits.confили /etc/security/limits.conf(где файл находится в зависимости от вашего конкретного дистрибутива Linux).
Например, чтобы разрешить кому-либо на компьютере увеличить количество открытых файлов до 10000, добавьте строку в limits.confфайл.
* hard nofile 10000
Затем выйдите из системы и войдите в свою систему, и вы сможете сделать:
ulimit -n 10000
без ошибки разрешения.
rootпользователя. Вы должны указать root hard nofile 10000, хотите ли вы настроить rootограничение.
ulimitи, наконец, узнал, что я вошел в систему как root. Вот почему я продолжал видеть 1024 в ulimit -a. Я изменил wildcare и добавил *внутрь limits.conf. Теперь все хорошо (я использую ssh-ключи, не волнуйтесь: P) - Спасибо !!!
/etc/security/limits.d/.
1) Добавьте следующую строку в /etc/security/limits.conf
webuser hard nofile 64000
затем войдите как веб-пользователь
su - webuser
2) Отредактируйте следующие два файла для веб-пользователя
добавьте файлы .bashrc и .bash_profile , запустив
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Выйдите из системы, затем снова войдите в систему и убедитесь, что изменения были внесены правильно:
$ ulimit -a | grep open
open files (-n) 64000
Вот оно и их бум, бум бум.
Если некоторые из ваших сервисов переходят в ulimits, иногда проще поместить соответствующие команды в init-скрипт сервиса. Например, когда Apache сообщает
[alert] (11) Ресурс временно недоступен: apr_thread_create: невозможно создать рабочий поток
Попробуйте положить ulimit -s unlimitedв /etc/init.d/httpd. Это не требует перезагрузки сервера.