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

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

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 бросает максимальные открытые пределы файла, достигнутая ошибка.

10 ответов


Я использую Debian, но это решение должно работать с Ubuntu.
Вы должны добавить строку в СУБД Neo4j-служба сценарий.
Вот что я сделал:--5-->

nano / etc / init.d / neo4j-сервис
добавить " параметр ulimit –Н 40000 " перед start-stop-daemon line на раздел do_start

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


что вы делаете, не будет работать для пользователя root. Возможно, вы используете свои службы как root, и поэтому вы не видите изменения.

увеличить ulimit для пользователя 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


у меня была та же проблема, и я заставил ее работать, добавив записи в /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's limit
# su - serviceuser
$ ulimit -n
10240    # still loginuser's limit.

можно использовать * чтобы указать увеличение для всех пользователей. Если я перезапущу службу как пользователь, в котором я вошел в систему, и добавлю ulimit -n для сценария init я вижу, что ограничения начального пользователя входа в систему установлены. У меня не было возможности проверить, какие ограничения пользователя используются во время загрузки системы или определения фактического предела nofile службы, которую я запускаю (которая запускается с помощью Start-stop-daemon).

там работают пока:
  1. добавьте настройку ulimit в сценарий init непосредственно перед запуском-остановкой-демоном.
  2. подстановочный знак или более обширные настройки ulimit в файле безопасности.

вы можете изменить сценарий инициализации для neo4j сделать ulimit -n 40000 перед neo4j.

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

у меня много проблем, чтобы заставить это работать.

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

sudo sysctl -w fs.inotify.max_user_watches=100000

редактировать

только что видел это от другого пользователя также на другом сайте stackexchange (оба работают, но эта версия постоянно обновления настройки системы, а не временно):

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; 
sudo sysctl -p

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


tl; dr установите как мягкие, так и жесткие пределы

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

some_user       soft    nofile          60000
some_user       hard    nofile          60000

и активируется следующим образом в /etc / pam.d / общая сессия:

session required pam_limits.so

если вы установили только жесткий предел,ulimit -a покажет значение по умолчанию (1024): Если вы установите только мягкий предел ulimit-a покажет (4096)

если вы поставили их обоих ulimit -a покажет мягкий предел (до жесткого предела, конечно)


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

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

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

  1. войти по root
  2. vi безопасность / ограничения.conf
  3. сделать ниже запись

    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
    
  4. сделать ниже запись для всех пользователей

    конфигурация Ulimit для каждого пользователя

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. после изменения файла пользователю необходимо выйти из системы и снова войти в систему, чтобы увидеть новый ценности.