J'ai récemment vérifié l'un de nos processus redis pour savoir quels ulimits étaient appliqués en utilisant:
cat /proc/<redis-pid>/limits
Et a été surpris d'apprendre qu'il était à la faible valeur par défaut:
Limit Soft Limit Hard Limit
Max open files 4016 4016
J'ai été surpris, car nous avons configuré les éléments suivants:
# /etc/sysctl.conf
fs.file-max = 100000
.
# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
.
# /etc/ssh/sshd_config
UsePAM yes
.
# /etc/pam.d/sshd
session required pam_limits.so
Quelqu'un peut-il me dire pourquoi l'augmentation ulimit n'est pas appliquée au processus de redis en cours d'exécution?
Le processus redis s'exécute en tant qu'utilisateur «redis», le serveur a été redémarré depuis que les limites ont été augmentées. Nous sommes sur Debian Squeeze.
Le paramètre sysctl fs.file-max est une large limite globale du système, je ne pense pas que ce soit une bonne idée de définir dans ulimit la même valeur.
Si vous définissez dans ulimit 100000 et dans sysctl.conf 100000 également, un utilisateur peut bloquer le système
De toute façon, en parlant de votre problème, vous devez être sûr que votre système utilise pam_limits
la source
Vous avez activé pam_limits pour sshd, mais cette commande est-elle exécutée à partir d'une session SSH? Vous devrez peut-être ajouter la même ligne à
/etc/pam.d/login
et / ou/etc/pam.d/su
et / ou/etc/pam.d/sudo
.la source
if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
. Quel pam serait approprié dans ce cas?su [user] -c
commande pour démarrer le script en tant qu'autre utilisateur ou votre programme s'exécute-t-il en tant que root? S'il utilisesu
, alors vous le mettriez/etc/pam.d/su
. Si vous utilisez asroot
, vous feriez probablement mieux avec la suggestion de c4f4t0r d'ajouter laulimit
commande dans votre script init.root
est autorisé à définir toutes les limites qu'il souhaite, vous n'avez donc pas vraiment à vous soucier du pam pour ce cas.--chuid redis:redis
surstart-stop-daemon
. J'ai ajouté ulimit au script de démarrage maintenant.