мы считаем, что мы увеличили максимальное количество открытых файловых дескрипторов для пользователя root. Это было сделано путем добавления этой строки в /etc/security/limits.conf:
* - nofile 2048
Мы считаем, что мы подтвердили, что лимит пользователя root был увеличен, потому что мы можем сказать (не описано здесь), что в нашем приложении (solr - которое запускается пользователем root) открыто 1098 файлов. Однако мы не можем точно сказать, сколько открытых файлов разрешено пользователю root. Мы ожидаем, что эта команда сработает, но это не так:
$ sudo -u root -s "ulimit -Sn"
1024
Любые идеи? Спасибо!
Ответы:
Получите PID процесса, который
solr
запущен, а затемcat /proc/$SOLR_PID/limits
- это скажет вам фактические пределы процесса.Я бы порекомендовал запускать такие вещи как
solr
отдельный непривилегированный пользователь. При этом у вас есть несколько вариантов ( limit.conf или добавитьulimit -n 2048
в сценарий инициализации, ...). Последний не такой блестящий, но работает для быстрой настройки и перезапуска демона.RANT: не говорите мне, что вы не можете перезапустить, потому что вы потеряете обслуживание. Если это так, вам все равно нужно настроить HA :)
источник
После изменения количества открытых файлов
/etc/security/limits.conf
пользователь должен выйти и снова войти в систему, чтобы вступить в силу. Итак, попробуйте это:источник
Я знаю, что на этот вопрос есть ответ, но это больше похоже на обходной путь, а не на реальное решение.
Согласно Ubuntu, это не ошибка, а проблема с документацией, см. Https://bugs.launchpad.net/ubuntu/+source/pam/+bug/65244.
Спасибо за ваш отчет. Как вы сказали, это не ошибка в pam, а проблема с документацией. Факт явного разрешения явно разрешать ограничения для пользователя root был рассмотрен некоторое время назад (30 августа 2000 г.), но для применения ограничений необходимо явно указать имя пользователя root.
Поэтому, если вы хотите изменить ulimit для всех пользователей, включая пользователя root, вы должны указать:
источник