Как увеличить максимальный открытый лимит файла Neo4j (ulimit) в Ubuntu?

В настоящее время ulimit -n отображается 10000. Я хочу увеличить его до 40000. Я отредактировал "/etc/sysctl.conf" и поместил fs.file-max=40000. Я также отредактировал /etc/security/limits.conf и обновил жесткие и мягкие значения. Но все же ulimit показывает 10000. Сделав все эти изменения, я перезагрузил свой ноутбук. У меня есть доступ к корневому паролю.

[email protected]_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 выдает максимальные допустимые пределы открытого файла.

Ответ 1

Я использую Debian, но это решение должно отлично работать с Ubuntu.
Вы должны добавить строку в neo4j-service script.
Вот что я сделал:

nano/etc/init.d/neo4j-service
Добавьте" ulimit -n 40000" перед тем, как start-stop-daemon line в разделе do_start

Обратите внимание, что я использую версию 2.0 Enterprise Edition. Надеюсь, это поможет вам.

Ответ 2

То, что вы делаете, не будет работать для пользователя 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. Как уже упоминалось в комментариях, вам даже не нужно перезагружаться, чтобы увидеть изменения.

Ответ 3

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

Ответ 4

У меня была такая же проблема, и я получил ее, добавив записи в /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 для службы, которую я запускаю (которая запускается с помощью запуска-остановки-демона).

Есть два подхода, которые работают сейчас:

  • добавьте настройку ulimit в init script, непосредственно перед запуском-остановкой.
  • или более обширные настройки ulimit в файле безопасности.

Ответ 5

Вы можете изменить init script для neo4j, чтобы выполнить ulimit -n 40000 перед запуском neo4j.

Однако я не могу не чувствовать, что вы лаем неправильное дерево. Разрешено ли neo4j более 10 000 дескрипторов открытых файлов? Это очень похоже на ошибку в neo4j или на то, как вы ее используете. Я бы попытался решить эту проблему.

Ответ 6

У меня много проблем с тем, чтобы это работало.

Используя следующее, вы можете обновить его независимо от вашего разрешения пользователя.

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

Ответ 7

Попробуйте запустить эту команду, она создаст файл *_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

Ответ 8

Конфигурация ULIMIT:

  • Вход по root
  • vi security/limits.conf
  • Сделайте ниже запись

    Начало настройки 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
    
  • После изменения файла пользователю необходимо снова выйти и войти в систему, чтобы увидеть новые значения.

Ответ 9

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, будет отображаться мягкий предел (до жесткого предела)

Ответ 10

Я сделал это так:

echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/