Artikelverzeichnis
Haben Sie bei der Arbeit plötzlich festgestellt, dass die CPU-Auslastung von Nginx in die Höhe geschossen ist? Erschwerend kommt hinzu, dass die zahlreichen Arbeitsprozesse von Nginx jedes Mal, wenn ich mir die Prozesse ansehe, wie verrückt Ressourcen verbrauchen.
Wenn Sie diese Szene sehen, wird Ihnen heiß und Sie müssen schreien: „Oh mein Gott, wird der Server explodieren?“ Keine Sorge, das bedeutet nicht, dass Ihr Server „fertig“ ist. , aber Nginx Wir brauchen Sie für eine umfassende Optimierung!
Analyse der Ursachen übermäßiger Nginx-Last

Zuerst müssen wir herausfinden,Warum ist Nginx plötzlich „erschöpft“?Es gibt viele Gründe für das Problem. Haben Sie keine Angst, wir finden es unten gemeinsam heraus.
1. Unangemessene Konfiguration
In der Nginx-Konfigurationsdatei ist der wichtigste Punkt worker_processes. Dieser Parameter bestimmt die Anzahl der von Nginx gestarteten Prozesse.
- Wenn Sie zu wenige Worker-Prozesse konfigurieren, steigt die CPU-Auslastung. Wenn Sie zu viele Worker-Prozesse konfigurieren, ist nicht genügend Arbeitsspeicher vorhanden.
- Sie müssen zum Beispiel einen Gleichgewichtspunkt finden,Setzen Sie worker_processes auf das 1- bis 2-fache der Anzahl der CPU-Kerne.
- Wenn Sie 4 Kerne haben, versuchen Sie es
worker_processes 4Oder setzen Sie es direkt aufauto.
2. Besuche steigen
Manchmal steigt die Auslastung von Nginx plötzlich an, nicht weil Sie einen Fehler gemacht haben, sondern weil die Anzahl der Besuche zu hoch ist.Stark gleichzeitige Zugriffsanforderungen führen zu einer Überlastung des Nginx-Workerprozesses., jeder Prozess ist überlastet und auch die CPU und der Speicher sind voll. Zu diesem Zeitpunkt müssen Sie möglicherweise die Serverressourcen verbessern, z. B. die Anzahl der CPU-Kerne oder den Speicher erhöhen. Dies ist natürlich auch eine Erinnerung: Vergessen Sie nicht, CDN-Offloading oder Load-Balancing in Betracht zu ziehen.
3. Es sind böswillige Angriffe aufgetreten
Im Internet „sehr beliebt“ zu sein, ist nicht immer eine gute Sache. Böswillige Angriffe können jederzeit auf Sie abzielen. Wenn Sie feststellen, dass die CPU-Auslastung ungewöhnlich hoch ist und die Quelle der Anforderungs-IP verdächtig ist, ist es sehr wahrscheinlich, dass Ihre Website von einem DDoS-Angriff betroffen ist. Zu diesem Zeitpunkt,Sie müssen sofort eine Firewall bereitstellen oder die Zugriffshäufigkeit begrenzenB. die Verwendung des mit Nginx gelieferten Strombegrenzungsmoduls oder das Einrichten einer IP-Blacklist.
Wie kann das Problem der hohen Speichernutzung des Nginx-Prozesses gelöst werden?
Die Frage ist also: Warum beansprucht der Nginx-Workerprozess so viele Ressourcen? Wir müssen mit der Konfiguration beginnen und diese Schritt für Schritt optimieren.
Konfigurationsmethode
Öffnen Sie die Nginx-Konfigurationsdatei: Normalerweise befindet sich die Hauptkonfigurationsdatei von Nginx unter
/etc/nginx/nginx.conf.Stellen Sie ein
worker_processes: In der Konfigurationsdatei gefundeneventsBlöcke, Einstellungenworker_processesWert. wenn nichteventsBlock, Sie müssen einen erstellen.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. Stellen Sie worker_connections richtig ein
Nginx worker_connections Der Parameter bestimmt die maximale Anzahl von Verbindungen, die jeder Arbeitsprozess verarbeiten kann. Wenn es zu klein ist, beeinträchtigt es die Parallelitätsleistung. Wenn es zu groß ist, verbraucht es möglicherweise zu viele Ressourcen.
Wie berechnet man den passenden Wert?
Vorausgesetzt, Sie verfügen über eine 4-Kern-CPU und 16 GB RAM, ist dies ein sicherer Ausgangspunkt worker_connections 4096.
Wenn Ihre Website jedoch viel Verkehr hat, sollten Sie diesen Wert auf 8192 erhöhen, um sicherzustellen, dass jeder Prozess genügend Anfragen verarbeiten kann.
events {
worker_connections 8192;
}
Auf diese Weise wird die Verarbeitungsleistung von Nginx erheblich verbessert.
2. Passen Sie keepalive_timeout an
Ein weiterer wichtiger Parameter für Nginx zur Bearbeitung von Anfragen ist keepalive_timeout.
Diese Einstellung bestimmt, wie lange die Verbindung des Clients zum Server aufrechterhalten werden kann.
Bei einer zu langen Einstellung werden zu viele Verbindungsressourcen belegt..
Du kannst es versuchen keepalive_timeout Auf 15 Sekunden einstellen, um die Verbindung aufrechtzuerhalten und Ressourcen freizugeben.
keepalive_timeout 15;
3. Optimieren Sie die Dateideskriptorgrenzen
Standardmäßig istLinux Das System hat eine Begrenzung der Anzahl der Dateideskriptoren, die von jedem Prozess geöffnet werden können.
Wenn Nginx eine große Anzahl von Dateien verarbeiten muss (z. B. statische Ressourcen), wird möglicherweise eine Fehlermeldung von Nginx mit der Meldung „too many open files".
Du kannst passieren worker_rlimit_nofile Erhöhen Sie das Dateideskriptorlimit, zum Beispiel auf 65535 eingestellt.
worker_rlimit_nofile 65535;
4. Aktivieren Sie Caching und gzip
Caching und Komprimierung sind zwei Schlüssel zur Optimierung der Website-Leistung.
Durch die Aktivierung der Caching-Funktion von Nginx können statische Ressourcen (wie Bilder und JS-Dateien) im Speicher zwischengespeichert werdenDadurch wird die Belastung des Servers erheblich reduziert.
Darüber hinaus kann die Aktivierung der gzip-Komprimierungsfunktion die übertragene Datenmenge reduzieren und die Website-Geschwindigkeit verbessern.
gzip on;
gzip_types text/plain application/javascript;
5. Analysieren Sie die Nginx-Ressourcennutzung
Wenn Sie schließlich alle oben genannten Optimierungen abgeschlossen haben, Nginx jedoch immer noch viel CPU beansprucht, müssen Sie möglicherweise einige Tools für eine detaillierte Analyse verwenden.
使用 top 或 htop Sehen Sie sich den Ressourcenverbrauch eines Prozesses in Echtzeit an,passieren strace Systemaufrufe verfolgen oder verwenden nmon Erstellen Sie Leistungsberichte. Nur durch eine umfassende Analyse des tatsächlichen Betriebs von Nginx können wir eine genauere Abstimmung durchführen.
总结
Keine Panik, wenn die CPU-Auslastung von Nginx ansteigt. Die Ursache kann einfach eine falsche Konfiguration oder übermäßiger Datenverkehr sein.
durch sinnvolle Anpassungen worker_processes 和 worker_connectionsDurch die Aktivierung von Caching, die Optimierung von Timeouts und Dateideskriptoren können Sie den Lastdruck auf Nginx deutlich reduzieren.
Nginx ist ein leistungsstarker Webserver, der bei richtiger Optimierung eine hervorragende Leistung für Ihre Website bieten kann.
Denken Sie daran, alle Fragen können von beantwortet werdenWissenschaftMethoden zur Lösung des Problems, die Optimierung der Serverleistung ist keine Ausnahme.
Überwachen und passen Sie rechtzeitig anist der Schlüssel zum effizienten Betrieb von Nginx. Wenn Sie diese Techniken beherrschen, ist Ihre Website auch bei hohem Datenverkehr oder böswilligen Angriffen sicher.
Ich hoffe, dieser Artikel hat Sie inspiriert, beeilen Sie sich und optimieren Sie Ihren Nginx!
Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) geteilt „Was soll ich tun, wenn die CPU-Auslastung des Nginx-Servers und die Prozessspeicherauslastung hoch sind?“ 》, hilfreich für Sie.
Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-32093.html
Um weitere versteckte Tricks freizuschalten🔑, treten Sie unserem Telegram-Kanal bei!
Teilen und liken, wenn es Ihnen gefällt! Ihre Shares und Likes sind unsere ständige Motivation!