Почему советы сообщают о пределе 1 024 файлов даже после обновления limits.conf?

Я вижу эту ошибку наверху своего файла redis.log:

Текущие максимальные открытые файлы 1024. maxclients был уменьшен до 4 064 для компенсации низкого ulimit.

Я выполнил эти шаги к букве (и перезагрузил):

Кроме того, я вижу это, когда я работаю ulimit:

ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535

Действительно ли эта ошибка является показной? В противном случае, что другие шаги я должен выполнить? Я выполняю советы 2.8.13 (подсказка дерева) на Ubuntu LTS 14.04.1 (снова, подсказка дерева).

Вот информация о пользователе:

ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root      1027  0.0  0.0  66328  2112 ?        Ss   20:30   0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu    1107 19.2 48.8 7629152 7531552 ?     Sl   20:30   2:21 /usr/local/bin/redis-server *:6379               

Сервер поэтому работает как человечность.

Вот мой limits.conf файл без комментариев:

ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile 65535
root hard nofile 65535

И вот вывод sysctl fs.file-макс.:

ubuntu@ip-XX-XXX-XXX-XXX:~$ sysctl -a| grep fs.file-max
sysctl: permission denied on key 'fs.protected_hardlinks'
sysctl: permission denied on key 'fs.protected_symlinks'
fs.file-max = 1528687
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'

как sudo

ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687

Кроме того, я вижу эту ошибку наверху файла redis.log, не уверенного, если это связано. Это имеет смысл, что пользователю человечности не разрешают изменить макс. открытые файлы, но дают высокий ulimits, который я попытался установить, он не должен должен быть:

[1050] 23 Aug 21:00:43.572 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1050] 23 Aug 21:00:43.572 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
9
задан 13 April 2017 в 15:14
4 ответа

Редактируйте свои файлы в каталоге /etc/pam.d/.

В вашем случае при запуске sudo -u ubuntu /usr/local/bin/redis-server необходимо добавить следующую строку в /etc/pam. d/sudo или в /etc/pam.d/common-session-noninteractive в случае, если /etc/pam.d/sudo включает следующее:

session required pam_limits.so

Это должно помочь в настройке конфигурации, предоставляемой внутри /etc/security/limits.conf.

.
4
ответ дан 2 December 2019 в 22:34

Еще одно предложение для пользователей, нашедших это сообщение, проблема которого не связана с pam_limits.so. В моем случае Redis запускался через supervisord. В этом случае метод, с помощью которого супервизор переключил контексты пользователя, заставил новый сеанс запускаться с системными пределами по умолчанию, а не с теми, которые я настроил для пользователя.

Решение в этом случае было найдено здесь . Короче говоря, вам необходимо определить ограничение с помощью ulimit -n как часть команды запуска в supervisord.

Пример:

[program:redis-a]
command=bash -c "ulimit -n 32768; exec /usr/local/bin/redis-server /etc/redis/a.conf"
3
ответ дан 2 December 2019 в 22:34

Примечание для других пользователей Ubuntu с аналогичной проблемой:

Если вы запускаете Redis при загрузке, например, через Upstart, вы можете установить это ограничение с помощью раздела «limit».

Итак, для nofile:

limit nofile 4096 4096

0
ответ дан 2 December 2019 в 22:34

А также увеличение лимита открытых файлов. Вам нужно увеличить maxclients в вашем redis.conf. По умолчанию всего 10000.

# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
maxclients 1024000
0
ответ дан 2 December 2019 в 22:34

Теги

Похожие вопросы