Дополнительно
Как изменить количество открытых файлов в Linux?
При запуске приложения я иногда получаю ошибку о «слишком большом количестве открытых файлов».
Запуск ulimit -a
сообщает, что ограничение составляет 1024. Как мне увеличить лимит выше 1024?
Редактировать
ulimit -n 2048
приводит к ошибке разрешения.
187
4
Вы всегда можете попробовать сделать
ulimit -n 2048
. Это только сбросит лимит для вашей текущей оболочки, и указанный вами номер не должен превышать жесткий пределКаждая операционная система имеет разные жесткие ограничения в файле конфигурации. Например, жесткий открытый предел файла в Solaris можно установить при загрузке из / etc / system.
В OS X эти же данные должны быть установлены в /etc/sysctl.conf.
В Linux эти настройки часто находятся в /etc/security/limits.conf.
Есть два вида ограничений:
Мягкие пределы могут быть установлены любым пользователем, в то время как жесткие ограничения могут изменяться только пользователем root. Лимиты являются собственностью процесса. Они наследуются при создании дочернего процесса, поэтому во время инициализации системы в скриптах init должны быть установлены общесистемные ограничения, а пользовательские ограничения должны устанавливаться во время входа в систему, например, с помощью pam_limits.
Часто по умолчанию устанавливаются при загрузке машины. Таким образом, даже если вы можете сбросить свой улимит в отдельной оболочке, вы можете обнаружить, что он возвращается к предыдущему значению при перезагрузке. Вы можете захотеть подготовить свои загрузочные сценарии к существующим командам ulimit, если вы хотите изменить значение по умолчанию.
Если вы используете Linux и получили ошибку разрешения, вам нужно будет поднять допустимый предел в файле
/etc/limits.conf
или/etc/security/limits.conf
(где находится файл, зависит от ваш конкретный дистрибутив Linux).Например, чтобы позволить любому человеку на компьютере увеличить количество открытых файлов до 10000, добавьте строку в файл
limits.conf
.* жесткий nofile 10000
Затем выйдите из системы и перейдите в свою систему, и вы сможете это сделать:
ulimit -n 10000
без ошибки разрешения.
/etc/security/limits.conf
затем войдите как веб-пользователь
добавить файл .bashrc и .bash_profile , запустив его
Вот и все, бум, бум бум.
Если некоторые из ваших служб переходят на улимиты, иногда легче поместить соответствующие команды в init-скрипт службы. Например, когда Apache сообщает
Попробуйте поместить
ulimit -s unlimited
в/etc/init.d/httpd
. Это не требует перезагрузки сервера.