Da die Standardparameter des Linux-Kernels auf den gängigsten Szenarien basieren und diese offensichtlich nicht der Definition eines Webservers entsprechen, der viele gleichzeitige Zugriffe unterstützt, müssen Sie die Parameter des Linux-Kernels ändern, um Nginx eine höhere Leistung zu ermöglichen. Bei der Optimierung des Kernels können Sie vieles tun. Normalerweise passen wir ihn jedoch den geschäftlichen Gegebenheiten entsprechend an. Wenn Nginx als statischer Webinhaltsserver, Reverse-Proxy oder Server zur Komprimierung verwendet wird, sind die Kernelparameteranpassungen anders. Hier nehmen wir eine einfache Konfiguration der gängigsten TCP-Netzwerkparameter vor, die es Nginx ermöglichen, mehr gleichzeitige Anfragen zu unterstützen. Die folgenden Linux-Systemkernel-Optimierungskonfigurationen wurden von Online-Geschäftssystemen getestet und die Server mit etwa 100.000 gleichzeitigen Verbindungen laufen gut. Es hat einige Zeit gedauert, sie zu organisieren, und jetzt möchte ich sie mit Ihnen teilen. Wenn ein Experte Probleme mit der Konfiguration sieht, weisen Sie ihn bitte darauf hin! # Steuert die Verwendung von TCP-Syncookies # zeigt an, dass die Wiederverwendung aktiviert ist. Erlaubt die Wiederverwendung von TIME-WAIT-Sockets für neue TCP-Verbindungen. Der Standardwert ist 0, was geschlossen bedeutet. net.ipv4.tcp_syncookies = 1 #Ein Boolesches Flag, das das Verhalten des Kernels bei vielen Verbindungsanforderungen steuert. Wenn aktiviert, sendet der Kernel proaktiv RST-Pakete, wenn der Dienst überlastet ist. net.ipv4.tcp_abort_on_overflow = 1 #Gibt die maximale Anzahl von TIME_WAITs an, die das System gleichzeitig verwalten kann. Wenn diese Zahl überschritten wird, wird TIME_WAIT sofort gelöscht und eine Warnmeldung ausgegeben. #Der Standardwert ist 180000, ändern Sie ihn auf 6000. Für Server wie Apache und Nginx kann dieser Parameter die maximale Anzahl von TIME_WAIT steuern. Der Server wird durch eine große Anzahl von TIME_WAIT verlangsamt net.ipv4.tcp_max_tw_buckets = 6000 #Selektive Antwort net.ipv4.tcp_sack = 1 #Diese Datei gibt an, ob die gleitende Fenstergröße der TCP/IP-Sitzung variabel ist. Der Parameterwert ist ein Boolescher Wert. 1 bedeutet, dass er veränderbar ist, und 0 bedeutet, dass er unveränderlich ist. TCP/IP verwendet normalerweise eine maximale Fenstergröße von 65535 Bytes, die für Hochgeschwindigkeitsnetzwerke geeignet ist. #Dieser Wert ist möglicherweise zu klein. Wenn diese Funktion aktiviert ist, kann die TCP/IP-Gleitfenstergröße um mehrere Größenordnungen erhöht werden, wodurch die Datenübertragungskapazität verbessert wird. net.ipv4.tcp_window_scaling = 1 #TCP-Empfangspuffer net.ipv4.tcp_rmem = 4096 87380 4194304 #TCP Sendepuffer net.ipv4.tcp_wmem = 4096 66384 4194304 # # Nicht genügend Socket-Speicher net.ipv4.tcp_mem = 94500000 915000000 927000000 #Diese Datei gibt die maximal zulässige Puffergröße für jeden Socket an. net.core.optmem_max = 81920 #Diese Datei gibt den Standardwert (in Bytes) für die Sende-Socket-Puffergröße an. net.core.wmem_default = 8388608 #Gibt die maximale Sende-Socket-Puffergröße (in Bytes) an. net.core.wmem_max = 16777216 #Gibt den Standardwert (in Bytes) für die Größe des Empfangs-Socket-Puffers an. net.core.rmem_default = 8388608 #Gibt die maximale Größe des Empfangs-Socket-Puffers an (in Bytes). net.core.rmem_max = 16777216 #Gibt die Länge der SYN-Warteschlange an, der Standardwert ist 1024. Durch Erhöhen der Warteschlangenlänge auf 10200000 können mehr Netzwerkverbindungen aufgenommen werden, die auf eine Verbindung warten. net.ipv4.tcp_max_syn_backlog = 1020000 #Die maximale Anzahl von Paketen, die an die Warteschlange gesendet werden dürfen, wenn die Rate, mit der jede Netzwerkschnittstelle Pakete empfängt, schneller ist als die Rate, mit der der Kernel diese Pakete verarbeitet. net.core.netdev_max_backlog = 862144 #Der Rückstand der Listenfunktion in der Webanwendung begrenzt unseren Kernelparameter net.core.somaxconn standardmäßig auf 128, und das von nginx definierte NGX_LISTEN_BACKLOG beträgt standardmäßig 511, daher muss dieser Wert angepasst werden. net.core.somaxconn = 262144 #Die maximale Anzahl von TCP-Sockets im System, die keinem Benutzerdatei-Handle zugeordnet sind. Wird diese Zahl überschritten, werden verwaiste Verbindungen sofort zurückgesetzt und eine Warnmeldung ausgegeben. #Dieses Limit dient nur dazu, einfache DoS-Angriffe zu verhindern. Verlassen Sie sich nicht zu sehr darauf und reduzieren Sie diesen Wert nicht künstlich. Erhöhen Sie stattdessen net.ipv4.tcp_max_orphans = 327680 #Zeitstempel kann das Umbrechen von Sequenznummern vermeiden. Bei einer Verbindung mit 1 Gbit/s treten mit Sicherheit bereits verwendete Sequenznummern auf. Der Zeitstempel ermöglicht es dem Kernel, solche „abnormalen“ Pakete zu akzeptieren. Dies muss ausgeschaltet werden. net.ipv4.tcp_timestamps = 0 #Um eine Verbindung zum anderen Ende zu öffnen, muss der Kernel als Antwort auf das vorherige SYN ein SYN und ein ACK senden. Dies ist der zweite Handshake im sogenannten Drei-Wege-Handshake. Diese Einstellung bestimmt die Anzahl der SYN+ACK-Pakete, die der Kernel sendet, bevor er die Verbindung aufgibt. net.ipv4.tcp_synack_retries = 1 #Die Anzahl der zu sendenden SYN-Pakete, bevor der Kernel den Verbindungsaufbau aufgibt. www.jb51.net net.ipv4.tcp_syn_retries = 1 #Zeigt an, dass die schnelle Wiederverwendung von TIME-WAIT-Sockets in TCP-Verbindungen aktiviert wird. Der Standardwert ist 0 und zeigt das Herunterfahren an. net.ipv4.tcp_tw_recycle = 1 # zeigt an, dass die Wiederverwendung aktiviert ist. Erlaubt die Wiederverwendung von TIME-WAIT-Sockets für neue TCP-Verbindungen. Der Standardwert ist 0, was geschlossen bedeutet. net.ipv4.tcp_tw_reuse = 1 #Ändern Sie die standardmäßige TIMEOUT-Zeit des Systems. net.ipv4.tcp_fin_timeout = 15 #Gibt die Häufigkeit an, mit der TCP Keepalive-Nachrichten sendet, wenn Keepalive aktiviert ist. Der Standardwert beträgt 2 Stunden und es wird empfohlen, ihn auf 20 Minuten zu ändern. net.ipv4.tcp_keepalive_time = 30 # gibt den Portbereich an, der für ausgehende Verbindungen verwendet wird. Der Standardwert ist sehr klein: 32768 bis 61000, ändern Sie ihn auf 10000 bis 65000. (Hinweis: Den Mindestwert nicht zu niedrig einstellen, da sonst evtl. der normale Port belegt wird!) net.ipv4.ip_local_port_range = 1024 65000 #Das Folgende erfordert möglicherweise das Laden des ip_conntrack-Moduls modprobe ip_conntrack. Einige Dokumente besagen, dass dieses Modul ungültig ist, wenn die Firewall eingeschaltet ist. #Verkürzen Sie das Timeout des etablierten net.netfilter.nf_conntrack_tcp_timeout_established = 180 #CONNTRACK_MAX Die maximal zulässigen Verbindungsverfolgungseinträge, also die „Aufgabe“ (Verbindungsverfolgungseinträge), die Netfilter gleichzeitig im Kernelspeicher verarbeiten kann net.netfilter.nf_conntrack_max = 1048576 net.nf_conntrack_max = 1048576 Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Gründe und Lösungen für das Versagen des React-Ereignisdrosselungseffekts
>>: js realisiert 3D-Soundeffekte durch audioContext
Was ist React React ist eine einfache JavaScript-...
Installation von Python 3 1. Abhängige Umgebung i...
Anfänger, die mit HTML in Berührung kommen, lerne...
<style type="text/css"> Code kopie...
Inhaltsverzeichnis 1. Datenbankbetrieb 2. Datenty...
1.v-bind (Abkürzung:) Um in Daten definierte Date...
Unter Linux ist alles eine Datei, daher besteht d...
Eine Transaktion ist eine logische Gruppe von Ope...
Wir verwenden normalerweise Float-Layout, um die ...
Inhaltsverzeichnis Vorwort Entwicklungsumgebung N...
Inhaltsverzeichnis dva Verwendung von dva Impleme...
Vue-Komponenten sind verbunden, daher ist es unve...
Die Antwort, die Sie oft hören, ist, dass die Ver...
In diesem Artikel wird der spezifische JavaScript...
Ein cooler JavaScript-Code, um Weibo-Benutzern st...