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


в настоящее время ulimit -n показывает 10000. Я хочу увеличить его до 40000. Я редактировал " / etc / sysctl.конф" и поставил fs.file-max=40000. Я также редактировал /etc/security/limits.conf и обновленные жесткие и мягкие значения. Но все же ограничение показывает 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 выдает максимальное количество открытых пределов файлов, достигших ошибки.

10 76

10 ответов:

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

nano / etc / init.d / neo4j-service
добавить " ulimit-n 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 для сценария инициализации я вижу, что ограничения начального пользователя входа в систему установлены. У меня не было возможности проверить, какие ограничения пользователя используются во время загрузки системы или определения того, что фактическое ограничение nofile является службой, которую я запускаю (которая запускается с помощью start-stop-daemon).

есть 2 подхода, которые работают на данный момент:

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

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

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

у меня много проблем с получением этой работы.

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

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

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

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

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

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

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. после изменения файла, пользователь должен выйти из системы и войти снова, чтобы увидеть новый ценности.