it-swarm.com.de

Ubuntu 16.04 Systemd redis Probleme mit ulimit

Ich hatte Probleme mit unserem neuen Redis-Server, nachdem ich von Ubuntu 14.04 auf 16.04 gewechselt habe. Die Konfiguration der offenen Dateilimitierung unter Verwendung aller Handbücher besagt, dass die Datei /etc/security/limits.conf mit den folgenden Einstellungen geändert werden muss

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

Und auch zu /etc/pam.d/common-session und /etc/pam.d/common-session-noninteractive hinzuzufügen

session required pam_limits.so

Ich habe alle diese Änderungen vorgenommen, aber redis startet immer noch mit einem Dateilimit von 4096, das unter Produktionslast schnell zu max-Verbindungen führt.

13
Ollie

Nach langem Suchen fand ich schließlich heraus, dass systemd ein Standardlimit von 4096 hat, und unabhängig davon, was Sie auf Systemebene einstellen, hat die systemd-Ebene immer Vorrang. Um dieses Problem zu beheben, ändern Sie den Grenzwert für das Öffnen der systemd-Datei, indem Sie die Datei /etc/systemd/system.conf bearbeiten und die folgende Einstellung hinzufügen

DefaultLimitNOFILE=65536

Es scheint, dass es in systemd viele Standardeinstellungen gibt, die die Systemeinstellungen überschreiben und daher in systemd eingestellt werden müssen

Wenn es also für Menschen verwendet wird, sind dies meine endgültigen Einstellungen für einen Ubuntu 16.04-Server zum Ausführen von Produktions-Redis.

Bearbeiten Sie /etc/systemd/system.conf (Sudo nano /etc/systemd/system.conf) und fügen Sie hinzu

DefaultLimitNOFILE=65536

Bearbeiten Sie /etc/security/limits.conf (Sudo nano /etc/security/limits.conf) und fügen Sie hinzu

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

Bearbeiten Sie /etc/pam.d/common-session (Sudo nano /etc/pam.d/common-session) und fügen Sie hinzu

session required pam_limits.so

Bearbeiten Sie /etc/pam.d/common-session-noninteractive (Sudo nano /etc/pam.d/common-session-noninteractive) und fügen Sie hinzu

session required pam_limits.so

Bearbeiten Sie /etc/rc.local (Sudo nano /etc/rc.local) und fügen Sie hinzu

sysctl -w net.core.somaxconn=65535

Bearbeiten Sie /etc/sysctl.conf (Sudo nano /etc/sysctl.conf) und fügen Sie hinzu

vm.overcommit_memory = 1

Bearbeiten Sie /etc/rc.local (Sudo nano /etc/rc.local) und fügen Sie hinzu

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

Die sysctl-Werte net.core.somaxconn und vm.overcommit_memory beziehen sich auf ulimit oder die Anzahl der geöffneten Dateien. Sie beziehen sich auf:

Wenn Ihr Problem mit dem Limit der geöffneten Dateien zusammenhängt (was ulimit -Sn/-Hn verarbeitet), würde ich nicht vorschlagen, damit zu spielen, es sei denn, Sie wissen genau, was Sie tun. 

1
Luis Vazquez