Als leistungsstarker WEB-Server reicht es nicht aus, nur die Parameter von Nginx selbst anzupassen, da der Nginx-Dienst auf einem leistungsstarken Betriebssystem basiert.
Im Folgenden sind einige gängige Methoden zur Optimierung von Linux-Kernel-Parametern aufgeführt.
net.ipv4.tcp_max_tw_buckets
Bei TCP-Verbindungen ändert sich der Status nach der Kommunikation zwischen Server und Client auf „Timewait“. timewaits ist Es wird immer größer.
Denn es wird auch eine bestimmte Menge an Ressourcen beanspruchen, daher sollte es einen Maximalwert geben. Wenn dieser Wert überschritten wird, löscht das System die früheste Verbindung, sodass sie immer in einer Größenordnung gehalten wird.
Dieser Wert wird durch den Parameter net.ipv4.tcp_max_tw_buckets bestimmt.
CentOS7-System, Sie können sysctl -a |grep tw_buckets verwenden, um seinen Wert anzuzeigen.
Sie können ihn entsprechend senken, z. B. auf 8000 anpassen. Schließlich verbrauchen zu viele Verbindungen in diesem Zustand Ressourcen.
Aber stellen Sie es nicht auf Zehner oder Hunderter ein, da die TCP-Verbindung in diesem Zustand auch nützlich ist.
Wenn derselbe Client erneut mit dem Server kommuniziert, muss nicht erneut eine neue Verbindung hergestellt werden. Zeit und Mühe sparen.
net.ipv4.tcp_tw_recycle = 1
Die Funktion dieses Parameters besteht darin, Verbindungen im Zeitwartezustand schnell wiederzuverwenden. Obwohl oben erwähnt wurde, dass das System Verbindungen im Timewait-Zustand automatisch löscht, wäre es nicht besser, wenn solche Verbindungen wiederverwendet würden.
Wenn Sie diesen Parameter auf 1 setzen, können Verbindungen im Wartestatus schnell wiederhergestellt werden. Er muss in Verbindung mit den folgenden Parametern verwendet werden.
net.ipv4.tcp_tw_reuse = 1
Dieser Parameter wird auf 1 gesetzt, um die Verbindung im Zeitwartezustand für eine neue TCP-Verbindung wiederzuverwenden. Er sollte in Verbindung mit den oben genannten Parametern verwendet werden.
net.ipv4.tcp_syncookies = 1
Im TCP-Drei-Wege-Handshake initiiert der Client eine Synchronisierungsanfrage an den Server Client mit Bestätigung.
Wenn der Client nach dem Senden der Anfrage direkt die Verbindung trennt und die vom Server initiierte Anfrage nicht akzeptiert, wird der Server es mehrmals wiederholen.
Dieser Wiederholungsvorgang dauert eine gewisse Zeit (normalerweise länger). Wenn die Anzahl der Verbindungen in diesem Zustand sehr groß ist, verbraucht der Server viele Ressourcen, was zu einer Lähmung führt.
Normale Verbindungen können nicht hergestellt werden. Dieses böswillige Halbverbindungsverhalten wird eigentlich als Syn-Flood-Angriff bezeichnet.
Auf 1 setzen, um SYN-Cookies zu aktivieren, die den oben erwähnten Syn-Flood-Angriff vermeiden können.
Nach dem Einschalten dieses Parameters fordert der Server den Client auf, in kurzer Zeit mit einer Seriennummer zu antworten, bevor er ack+syn an den Client sendet.
Wenn der Client die Seriennummer oder die nicht bereitstellen kann Die angegebene Seriennummer ist falsch, der Client wird als illegal betrachtet, daher wird keine Bestätigung+Syn an den Client gesendet und es ist kein erneuter Versuch erforderlich.
net.ipv4.tcp_max_syn_backlog
Dieser Parameter definiert die maximale Anzahl halbverbundener TCP-Verbindungen, die das System akzeptieren kann. Der Client sendet ein Syn-Paket an den Server, der es aufzeichnet. Dieser Parameter bestimmt die maximale Anzahl solcher Verbindungen, die aufgezeichnet werden können. In CentOS7 ist der Standardwert 256. Wenn dieser Wert bei einem Syn-Flood-Angriff zu klein ist, führt dies leicht zum Absturz des Servers.
Tatsächlich verbraucht der Server nicht zu viele Ressourcen (CPU, Speicher usw.). .) zu diesem Zeitpunkt, sodass Sie ihn entsprechend erhöhen können, beispielsweise auf 30000.
net.ipv4.tcp_syn_retries
net.ipv4.tcp_synack_retries
net.ipv4.ip_local_port_range
Wenn der Client eine Verbindung mit dem Server herstellt, indem er beispielsweise auf Port 80 des Servers zugreift, öffnet der Client zufällig einen Port und initiiert eine Verbindung mit dem Server.
Dieser Parameter definiert den Zufallsbereich Häfen. Der Standardwert ist 32768 61000 und es wird empfohlen, ihn auf 1025 61000 anzupassen.
net.ipv4.tcp_fin_timeout
Unter den TCP-Verbindungszuständen ist einer auf dem Client der FIN-WAIT-2-Zustand, also der Zustand, bevor sich der Zustand in „Timewait“ ändert.
Dieser Parameter definiert den Timeout-Zeitraum des Verbindungsstatus, der zu keinem Prozess gehört. Der Standardwert ist 60 und es wird empfohlen, ihn auf 6 anzupassen.
net.ipv4.tcp_keepalive_time
Einer der TCP-Verbindungszustände ist der etablierte Zustand. Nur in diesem Zustand können Client und Server kommunizieren. Wenn die Kommunikation unter normalen Umständen abgeschlossen ist,
teilt der Client oder der Server der anderen Partei mit, die Verbindung zu schließen, und der Status ändert sich in „Zeit warten“. Wenn der Client geschlossen werden soll (z. B. wenn die Verbindung zum Client getrennt ist), wird dieser Parameter zur Bestimmung benötigt.
Zum Beispiel wurde die Verbindung zum Client getrennt, aber der Verbindungsstatus auf dem Server ist immer noch bestehen. Um zu bestätigen, ob die Verbindung zum Client getrennt ist, muss der Server hin und wieder ein Erkennungspaket zur Bestätigung und Überprüfung senden andere Partei. Ist es online? Diese Zeit wird durch diesen Parameter bestimmt. Der Standardwert beträgt 7200 Sekunden und es wird empfohlen, ihn auf 30 Sekunden einzustellen.
Der 10. und 11. Parameter geben an, wann die Erkennung eingeleitet werden soll und wie lange es dauern wird, bis die Erkennung fehlschlägt. Sie legen jedoch nicht fest, wie oft die Erkennung abgeschlossen wird . .
Um Kernel-Parameter unter Linux anzupassen, können Sie die Konfigurationsdatei /etc/sysctl.conf direkt bearbeiten und dann den Befehl sysctl -p ausführen, um wirksam zu werden.
Kombiniert mit jedem oben analysierten Kernel-Parameter, dem Beispiel ist wie folgt
6 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_max_tw_buckets = 8000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 30000 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_synack_retries = 2 net.ipv4.ip_local_port_range = 1025 61000 net.ipv4.tcp_keepalive_intvl = 3 net.ipv4.tcp_keepalive_probes = 2
Das obige ist der detaillierte Inhalt vonSo optimieren Sie die Linux-Kernel-Parameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!