Je vois cette erreur en haut de mon fichier redis.log:
Le nombre maximal de fichiers ouverts actuellement est de 1024. maxclients a été réduit à 4064 pour compenser le faible ulimit.
J'ai suivi ces étapes à la lettre (et redémarré):
De plus, je vois cela quand je cours ulimit
:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535
Cette erreur est-elle spécieuse? Sinon, quelles autres étapes dois-je effectuer? J'utilise redis 2.8.13 (pointe de l'arbre) sur Ubuntu LTS 14.04.1 (encore une fois, pointe de l'arbre).
Voici les informations utilisateur:
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
Le serveur fonctionne donc en tant qu'ubuntu.
Voici mon fichier limits.conf sans commentaires:
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
Et voici la sortie de sysctl fs.file-max:
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'
comme sudo
ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687
En outre, je vois cette erreur en haut du fichier redis.log, je ne sais pas si elle est liée. Il est logique que l'utilisateur ubuntu ne soit pas autorisé à modifier le nombre maximal de fichiers ouverts, mais compte tenu des ulimits élevés que j'ai essayé de définir, il ne devrait pas avoir besoin de:
[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.
Une autre suggestion pour les utilisateurs qui trouvent ce message dont le problème n'est pas lié à pam_limits.so. Dans mon cas, Redis était lancé via supervisord. Dans ce cas, la méthode par laquelle supervisord a changé de contexte utilisateur a entraîné l'exécution de la nouvelle session avec les limites par défaut du système, et non celles que j'avais configurées pour l'utilisateur.
La solution dans ce cas a été trouvée ici . En bref, vous devez définir la limite via ulimit -n dans le cadre de la commande de démarrage dans supervisord.
Exemple:
la source
En plus d'augmenter la limite de fichiers ouverts. Vous devez augmenter maxclients dans votre redis.conf. Ce n'est que 10000 par défaut.
la source
Remarque pour les autres utilisateurs d'Ubuntu ayant un problème similaire:
Si vous démarrez Redis au démarrage, par exemple via Upstart, vous pouvez définir cette limite avec la strophe "limit".
Donc pour nofile:
limit nofile 4096 4096
la source