Linux-Kernel-Tuning
Um das System in die Lage zu versetzen, eine größere Parallelität zu unterstützen, ist es neben der notwendigen Installation der Event-Erweiterung auch von größter Bedeutung, den Linux-Kernel zu optimieren. Die folgenden Optimierungen sind äußerst wichtig; bitte vervollständigen Sie sie nacheinander.
Parametererklärung:
max-file: Bezieht sich auf die Anzahl der Dateihandles, die systemweit geöffnet werden können. Betrifft das gesamte Betriebssystem und nicht nur den Benutzer.
ulimit -n: Bezieht sich auf die Anzahl der Dateihandles, die prozessbezogen geöffnet werden können. Ist die Kontrolle über die verfügbaren Dateihandles für den aktuellen Benutzer und die von ihm gestarteten Prozesse in der aktuellen
shell.
Um die systemweite Anzahl der geöffneten Dateihandles zu überprüfen: cat /proc/sys/fs/file-max
Öffnen Sie die Datei /etc/sysctl.conf und fügen Sie die folgenden Einstellungen hinzu:
# Dieser Parameter legt die Anzahl der TIME_WAIT-Verbindungen fest; wenn der Standardwert überschritten wird, wird er sofort gelöscht
net.ipv4.tcp_max_tw_buckets = 20000
# Definiert die maximale Länge der Listen-Warteschlange für jeden Port im System; dies ist ein globaler Parameter
net.core.somaxconn = 65535
# Maximale Anzahl an Verbindungsanfragen, die in der Warteschlange gespeichert werden können, bevor die Bestätigung des gegenüberliegenden Endes eingegangen ist
net.ipv4.tcp_max_syn_backlog = 262144
# Wenn der Empfang von Paketen an jedem Netzwerkinterface schneller erfolgt als die Verarbeitung durch den Kernel, die maximale Anzahl der Pakete, die in die Warteschlange gelangen dürfen
net.core.netdev_max_backlog = 30000
# Diese Option führt dazu, dass Clients im NAT-Netzwerk zeitlich begrenzt werden; wird empfohlen auf 0 zu setzen. Ab dem Linux-Kernel 4.12 wurde die tcp_tw_recycle-Konfiguration entfernt; ignorieren Sie den Fehler "No such file or directory"
net.ipv4.tcp_tw_recycle = 0
# Gesamtanzahl der Dateien, die von allen Prozessen im System geöffnet werden können
fs.file-max = 6815744
# Größe der Firewall-Tracking-Tabelle. Hinweis: Wenn die Firewall nicht aktiviert ist, wird der Fehler "net.netfilter.nf_conntrack_max ist ein unbekannter Schlüssel" angezeigt; ignorieren Sie dies
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000
Führen Sie sysctl -p aus, damit die Änderungen sofort wirksam werden.
Hinweis:
Die /etc/sysctl.conf bietet viele einstellbare Optionen; andere Optionen können je nach Ihren Umgebungsanforderungen eingestellt werden.
Anzahl geöffneter Dateien
Die Einstellung der Anzahl geöffneter Dateien im System löst das Problem „too many open files“ unter hoher Parallelität. Diese Option wirkt sich direkt auf die Anzahl der Clientverbindungen aus, die ein einzelner Prozess verwalten kann.
Soft open files ist ein Linux-Systemparameter, der die maximalen Dateihandles beeinflusst, die ein einzelner Prozess im System öffnen kann. Dieser Wert beeinflusst die Anzahl der Benutzerverbindungen, die ein einzelner Prozess in einer Langzeitverbindung wie einem Chat aufrechterhalten kann. Durch Ausführen von ulimit -n können Sie diesen Parameterwert einsehen. Wenn dieser Wert 1024 beträgt, bedeutet dies, dass ein einzelner Prozess gleichzeitig maximal 1024 oder weniger (da andere Datei-Handles geöffnet sind) aufrechterhalten kann. Wenn vier Prozesse Benutzerverbindungen aufrechterhalten, beträgt die maximale Anzahl an gleichzeitigen Verbindungen, die die gesamte Anwendung aufrechterhalten kann, daher nicht mehr als 4*1024, d. h. es können höchstens 4x1024 Benutzer online sein. Sie können diese Einstellung erhöhen, damit der Dienst mehr TCP-Verbindungen aufrechterhalten kann.
Drei Methoden zur Änderung von Soft open files:
Erste Methode: Führen Sie im Terminal ulimit -HSn 102400 direkt aus und starten Sie dann Workerman neu.
Dies ist nur im aktuellen Terminal wirksam; nach dem Verlassen wird die Anzahl der geöffneten Dateien wieder auf den Standardwert zurückgesetzt.
Zweite Methode: Fügen Sie am Ende der Datei /etc/profile eine Zeile ulimit -HSn 102400 hinzu, sodass bei jedem Terminallogin automatisch ausgeführt wird. Änderungen erfordern einen Neustart von Workerman.
Dritte Methode: Um die Änderung des Wertes für geöffnete Dateien dauerhaft wirksam zu machen, müssen Sie die Konfigurationsdatei /etc/security/limits.conf bearbeiten. Fügen Sie hinten in dieser Datei hinzu:
* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000
Diese Methode erfordert einen Neustart des Servers, damit sie wirksam wird.