В настоящее время ulimit -n
отображается 10000
. Я хочу увеличить его до 40000
. Я отредактировал "/etc/sysctl.conf" и поместил fs.file-max=40000
. Я также отредактировал /etc/security/limits.conf
и обновил жесткие и мягкие значения. Но все же ulimit показывает 10000
. Сделав все эти изменения, я перезагрузил свой ноутбук. У меня есть доступ к корневому паролю.
usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000
Добавлено следующие строки в /etc/security/limits.conf
-
* soft nofile 40000
* hard nofile 40000
Я также добавил следующую строку в /etc/pam.d/su
-
session required pam_limits.so
Я пробовал все возможные способы, как это давалось на других форумах, но я могу достичь максимального предела 10000
, а не дальше этого. В чем может быть проблема?
Я делаю это изменение, потому что neo4j
выдает максимальные допустимые пределы открытого файла.
Я использую Debian, но это решение должно отлично работать с Ubuntu.
Вы должны добавить строку в neo4j-service script.
Вот что я сделал:
nano/etc/init.d/neo4j-service
Добавьте" ulimit -n 40000" перед тем, как start-stop-daemon line в разделе do_start
Обратите внимание, что я использую версию 2.0 Enterprise Edition. Надеюсь, это поможет вам.
/etc/security/limits.conf
и /etc/pam.d/common-session*
То, что вы делаете, не будет работать для пользователя root. Возможно, вы используете свои службы как root, и, следовательно, вы не видите изменения.
Чтобы увеличить ulimit для пользователя root, вы должны заменить *
на root. *
не применяется для пользователя root. Отдых - это то же самое, что и вы. Я перепишу его здесь.
Добавьте в файл следующие строки: /etc/security/limits.conf
root soft nofile 40000
root hard nofile 40000
Затем добавьте следующую строку в файл: /etc/pam.d/common-session
session required pam_limits.so
Это обновит ulimit для пользователя root. Как уже упоминалось в комментариях, вам даже не нужно перезагружаться, чтобы увидеть изменения.
1) Проверьте ограничение sysctl file-max
:
$ cat /proc/sys/fs/file-max
Если предел ниже желаемого значения, откройте sysctl.conf
и добавьте эту строку в конец файла:
fs.file-max = 65536
Наконец, примените пределы sysctl
:
$ sysctl -p
2) Измените /etc/security/limits.conf
и добавьте ниже упомянутый
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
Эти ограничения не будут применяться для пользователя root
, если вы хотите изменить ограничения root
, которые вы должны сделать это явно:
root soft nofile 65535
root hard nofile 65535
...
3) Перезагрузите систему или добавьте следующую строку в конец /etc/pam.d/common-session
:
session required pam_limits.so
Выйти и войти снова.
4) Проверьте мягкие пределы:
$ ulimit -a
и жесткие ограничения:
$ ulimit -Ha
....
open files (-n) 65535
Ссылка: http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html
gnome-session-quit
У меня была такая же проблема, и я получил ее, добавив записи в /etc/security/limits.d/90-somefile.conf
. Обратите внимание, что для того, чтобы увидеть лимиты работы, мне пришлось полностью выйти из сеанса ssh, а затем снова войти в систему.
Я хотел установить ограничение для конкретного пользователя, который запускает службу, но кажется, что я получаю ограничение, установленное для пользователя, в который я входил. Вот пример, показывающий, как ulimit устанавливается на основе аутентифицированного пользователя, а не эффективного пользователя:
$ sudo cat /etc/security/limits.d/90-nofiles.conf
loginuser soft nofile 10240
loginuser hard nofile 10240
root soft nofile 10241
root hard nofile 10241
serviceuser soft nofile 10242
serviceuser hard nofile 10242
$ whoami
loginuser
$ ulimit -n
10240
$ sudo -i
# ulimit -n
10240 # loginuser limit
# su - serviceuser
$ ulimit -n
10240 # still loginuser limit.
Вы можете использовать *
, чтобы указать увеличение для всех пользователей. Если я перезапущу службу в качестве пользователя, вошедшего в систему, и добавлю ulimit -n
в init script, я вижу, что пользовательские лимиты пользовательского входа на месте. У меня не было возможности проверить, какие лимиты пользователей используются во время загрузки системы, или для определения того, какой фактический предел nofile для службы, которую я запускаю (которая запускается с помощью запуска-остановки-демона).
Есть два подхода, которые работают сейчас:
whoami
), я сначала получаю 1024, затем 65536 (для root), затем 65536 для пользователя. Но первым был тот же пользователь. У вас есть объяснение этому, я сбит с толку
Я сделал это так:
echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/
tl; dr устанавливает как мягкие, так и жесткие пределы
Я уверен, что он работает по назначению, но я добавлю его здесь на всякий случай. Для полноты здесь задан предел (см. Ниже синтаксис): /etc/security/limits.conf
some_user soft nofile 60000
some_user hard nofile 60000
и активируется следующим образом:/etc/pam.d/common-session:
session required pam_limits.so
Если вы установите только жесткий предел, ulimit -a
отобразит значение по умолчанию (1024):
Если вы установите только мягкий предел ulimit -a, вы увидите (4096)
Если вы установите их как ulimit -a
, будет отображаться мягкий предел (до жесткого предела)
Конфигурация ULIMIT:
Сделайте ниже запись
website soft nofile 8192
website hard nofile 8192
website soft nproc 4096
website hard nproc 8192
website soft core unlimited
website hard core unlimited
После изменения файла пользователю необходимо снова выйти и войти в систему, чтобы увидеть новые значения.
Попробуйте запустить эту команду, она создаст файл *_limits.conf
в /etc/security/limits.d
echo "* soft nofile 102400" > /etc/security/limits.d/*_limits.conf && echo "* hard nofile 102400" >> /etc/security/limits.d/*_limits.conf
Просто выйдите из терминала и снова войдите в систему и подтвердите с помощью ulimit -n
он установит для * users
У меня много проблем с тем, чтобы это работало.
Используя следующее, вы можете обновить его независимо от вашего разрешения пользователя.
sudo sysctl -w fs.inotify.max_user_watches=100000
Edit
Просто увидел это у другого пользователя на другом сайте stackexchange (оба работают, но эта версия постоянно обновляет системные настройки, а не временно):
echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf;
sudo sysctl -p
Вы можете изменить init script для neo4j
, чтобы выполнить ulimit -n 40000
перед запуском neo4j
.
Однако я не могу не чувствовать, что вы лаем неправильное дерево. Разрешено ли neo4j
более 10 000 дескрипторов открытых файлов? Это очень похоже на ошибку в neo4j
или на то, как вы ее используете. Я бы попытался решить эту проблему.
neo4j
используя neo4j start
. Где я могу найти сценарий инициализации для него?
ulimit -n 40000
перед neo4j start
sudo ulimit -n 40000