Как изменить число открытых файлов в Linux? [закрытый]



при запуске моего приложения, я иногда получаете ошибку о too many files open.



под управлением ulimit -a сообщает, что предел составляет 1024. Как увеличить лимит выше 1024?



Edit
ulimit -n 2048 приводит к ошибке разрешения.

439   4  

4 ответов:

вы всегда можете попробовать сделать ulimit -n 2048. Это приведет только к сбросу лимита для вашей текущей оболочки, и указанное число не должно превышать жесткий предел

каждая операционная система имеет различные жесткие ограничения установки в файле конфигурации. Например, предел жесткого открытия файла на Solaris может быть установлен при загрузке из /etc / system.

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

в OS X эти же данные должны быть установлены в /etc / sysctl.конф.

kern.maxfilesperproc=166384
kern.maxfiles=8192

в Linux эти настройки часто находятся в в /etc/безопасности/ограничения.конф.

есть два вида лимитов:

  • софт ограничения-это просто применяемые в настоящее время ограничения
  • жесткий пределы отметьте максимальное значение, которое не может быть превышено путем установки мягкого предела

мягкие ограничения могут быть установлены любым пользователем, в то время как жесткие ограничения изменяются только root. Ограничения-это свойство процесса. Они наследуются, когда дочерний процесс создается так общесистемные ограничения должны быть установлены во время инициализации системы в сценариях init, а пользовательские ограничения должны быть установлены во время входа пользователя, например, с помощью pam_limits.

при загрузке машины часто устанавливаются значения по умолчанию. Таким образом, даже если вы можете сбросить ulimit в отдельной оболочке, вы можете обнаружить, что он сбрасывается обратно к предыдущему значению при перезагрузке. Если вы хотите изменить значение по умолчанию, вы можете использовать сценарии загрузки для команд existence ulimit.

если вы используете Linux, и вы получили ошибку разрешения, вам нужно будет поднять допустимый предел в /etc/limits.conf или /etc/security/limits.conf файл (расположение файла зависит от конкретного дистрибутива Linux).

например, чтобы позволить кому-либо на машине увеличить количество открытых файлов до 10000 добавьте строку в .

* hard nofile 10000

затем выход из системы и relogin к вашей системе, и вы должны быть в состоянии сделать:

ulimit -n 10000

без разрешения ошибки.

1) добавьте следующую строку в /etc/security/limits.conf

webuser hard nofile 64000

затем войдите в систему как пользователя

su - webuser

2) отредактируйте следующие два файла для webuser

добавить .bashrc и и .файл под управлением

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. Это не требует перезагрузки сервера.

Comments

    Ничего не найдено.