web-dev-qa-db-fra.com

Ubuntu 16.04 systemd redis problèmes avec ulimit

J'ai eu des problèmes avec notre nouveau serveur Redis après le passage d'Ubuntu 14.04 à 16.04. La configuration de la limite de fichiers ouverts en utilisant tous les guides dit de changer le fichier /etc/security/limits.conf avec les paramètres suivants

*    soft nofile 65535
*    hard nofile 65535
root soft nofile 65535
root hard nofile 65535

Et aussi à ajouter à /etc/pam.d/common-session et /etc/pam.d/common-session-noninteractive

session required pam_limits.so

J'ai apporté toutes ces modifications, mais redis est toujours en cours de démarrage avec une limite de fichiers de 4096 fichiers, nombre auquel le nombre de connexions atteint rapidement la charge de production.

13
Ollie

Après de nombreuses recherches, j'ai finalement trouvé que systemd avait une limite standard de 4096 et quel que soit ce que vous définissez au niveau système, le niveau systemd aura toujours la priorité. Pour résoudre ce problème, modifiez la limite de fichiers ouverts dans systemd en modifiant /etc/systemd/system.conf et en ajoutant le paramètre suivant.

DefaultLimitNOFILE=65536

Il semble qu'il y ait beaucoup de paramètres par défaut dans systemd qui remplacent les paramètres système, il faut donc les définir dans systemd.

Donc, si cela peut être utile à des personnes, ce sont mes derniers paramètres pour un serveur Ubuntu 16.04 pour exécuter des redis de production.

Éditez /etc/systemd/system.conf (Sudo nano /etc/systemd/system.conf) et ajoutez

DefaultLimitNOFILE=65536

Éditez /etc/security/limits.conf (Sudo nano /etc/security/limits.conf) et ajoutez

*    soft nofile 64000
*    hard nofile 64000
root soft nofile 64000
root hard nofile 64000

Éditez /etc/pam.d/common-session (Sudo nano /etc/pam.d/common-session) et ajoutez

session required pam_limits.so

Éditez /etc/pam.d/common-session-noninteractive (Sudo nano /etc/pam.d/common-session-noninteractive) et ajoutez

session required pam_limits.so

Éditez /etc/rc.local (Sudo nano /etc/rc.local) et ajoutez

sysctl -w net.core.somaxconn=65535

Éditez /etc/sysctl.conf (Sudo nano /etc/sysctl.conf) et ajoutez

vm.overcommit_memory = 1

Éditez /etc/rc.local (Sudo nano /etc/rc.local) et ajoutez

echo never > /sys/kernel/mm/transparent_hugepage/enabled
29
Ollie

Les valeurs sysctl net.core.somaxconn et vm.overcommit_memory sont associées à ulimit ou au nombre de fichiers ouverts . Elles concernent:

Si votre problème concerne la limite de fichiers ouverts (ce que ulimit -Sn/-Hn gère), je ne recommanderais pas de jouer avec cela, à moins que vous ne sachiez exactement ce que vous faites. 

1
Luis Vazquez