So optimieren Sie die Linux-Kernel-Parameter

WBOY
Freigeben: 2023-05-11 18:58:21
nach vorne
2729 Leute haben es durchsucht

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

Dieser Parameter ist für den Client geeignet. Er definiert die maximale Anzahl von Wiederholungsversuchen zum Initiieren der Synchronisierung. Der Standardwert ist 6 und es wird empfohlen, ihn auf 2 zu ändern.

  • net.ipv4.tcp_synack_retries

Dieser Parameter gilt für den Server. Er definiert die maximale Anzahl von Wiederholungsversuchen zum Initiieren von Syn+ack. Der Standardwert ist 5. Es wird empfohlen, ihn auf 2 zu ändern Syn-Flood-Angriffe ordnungsgemäß verhindern.

  • net.ipv4.ip_local_port_range

Dieser Parameter definiert den standardmäßig reservierten Portbereich 1024 und niedriger, und die oben genannten Teile sind benutzerdefinierte Ports. Dieser Parameter gilt für den Client.

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.

  • net.ipv4.tcp_keepalive_intvl

  • Dieser Parameter ist derselbe wie der obige Parameter, um innerhalb der angegebenen Zeit zu prüfen, ob der Client online ist Dies Zu diesem Zeitpunkt kann der Server nicht feststellen, dass die andere Partei nicht online ist, sondern muss es mehrmals versuchen. Dieser Parameter definiert die Zeit zum erneuten Senden der Probe, d. h. wie lange es dauert, die Probe erneut zu initiieren, nachdem zum ersten Mal ein Problem mit der anderen Partei festgestellt wurde.
Der Standardwert beträgt 75 Sekunden und kann auf 3 Sekunden geändert werden.



    net.ipv4.tcp_keepalive_probes
  • 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 . .
  • Dieser Parameter definiert die Anzahl der Pakete, die die Erkennung initiieren sollen. Der Standardwert ist 9 und es wird empfohlen, ihn auf 2 festzulegen.
Einstellungen und Beispiele

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage