Nginx-Leistungsoptimierung

Nginx ist ein kostenloser, leistungsstarker und leichtgewichtiger Open-Source-Webserver, der als Load Balancer, Reverse-Proxy, HTTP-Cache und Mail-Proxy verwendet wird. Obwohl Nginx im Vergleich zu anderen Webservern recht neu ist, steigt seine Popularität aufgrund seiner hohen Leistung. Mit Ihrer standardmäßigen Nginx-Konfiguration erhalten Sie möglicherweise eine schnelle Leistung, aber wir können die Nginx-Leistung optimal steigern, indem wir einige Konfigurationen ändern.

In diesem Artikel lernen Sie 8 verschiedene Möglichkeiten kennen, um Nginx für eine bessere Leistung zu steigern. Um dies zu demonstrieren example In diesem Artikel habe ich Nginx auf dem Ubuntu 20.04 LTS-System installiert.

Worker-Prozesse ändern

Alle Webserver-Anfragen in Nginx werden von einem Worker-Prozess verarbeitet. In Nginx sind Worker-Prozesse als Architektur mit mehreren Worker-Prozessen für die Verarbeitung der Anfrage konzipiert, und ein Master-Prozess ist für die Verwaltung aller Worker-Prozesse sowie die Analyse der Konfiguration verantwortlich. In der Standardkonfiguration von Nginx ist der Worker-Prozess-Parameter auf Auto gesetzt, wodurch der Worker-Prozess entsprechend dem verfügbaren CPU-Kern gestartet wird. Wie in den offiziellen Dokumenten von Nginx empfohlen, ist dies der beste Weg, um den Worker-Prozess gemäß dem verfügbaren CPU-Kern zu halten, daher ist Auto der empfohlene Parameter. Wenn Sie neugierig sind, wie viele Kerne Ihre Prozessoren haben, führen Sie einfach den folgenden Befehl aus.

$ grep processor /proc/cpuinfo | wc -l

Sie können den Standardwert des Worker-Prozesses in der Nginx-Konfigurationsdatei ändern, die sich unter befindet /etc/nginx/nginx.conf. Wenn Ihr Server einen höheren Datenverkehr hat und Sie mehr Arbeitsprozesse hinzufügen müssen, ist es besser, den Server auf mehr Core-Prozessoren aufzurüsten.

Erhöhen des Limits für Arbeiterverbindungen

Worker-Verbindung ist die Gesamtzahl gleichzeitiger Verbindungen, die jeder verfügbare Worker-Prozess verwalten kann. Standardmäßig kann der Worker-Prozess 512 Verbindungen gleichzeitig verwalten. Bevor Sie den Wert der Worker-Verbindung ändern, müssen Sie das maximale Verbindungssystem überprüfen, um die Verwendung des folgenden Befehls zum Aktualisieren der Verbindungskonfiguration entsprechend zu ermöglichen.

$ ulimit -n

Um Nginx voll auszuschöpfen, setzen Sie den Worker-Verbindungswert auf das maximale Verbindungssystem, das das System in der Datei nginx.conf erlaubt.

Implementieren der Inhaltskomprimierung

Für die Komprimierung von Webinhalten verwendet Nginx gzip, um die Bereitstellungszeit von Inhalten zu verlängern und die Nutzung der Netzwerkbandbreite zu verringern. In der Konfiguration finden Sie die gzip-Konfiguration im kommentierten Zustand, Sie können die gzip jedoch nach Bedarf auskommentieren und ändern. Da der gzip-Komprimierungsprozess Systemressourcen verwendet, wenn Sie über begrenzte Ressourcen verfügen, ändern Sie die Konfiguration entsprechend, z.

Zwischenspeichern von statischen Inhalten

Bei dieser modernen Webentwicklung werden die meisten Inhalte statisch an den Browser oder Client bereitgestellt, sodass das Zwischenspeichern der statischen Dateien den Inhalt schneller lädt. Es verringert auch die Verbindungsanfrage an Nginx, wenn Inhalte aus dem Cache geladen werden. Um den Caching-Prozess zu starten, fügen Sie die folgende Anweisung zu Ihrer virtuellen Nginx-Host-Konfigurationsdatei hinzu.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

Die obige Anweisung speichert die Ressourcendatei 30 Tage lang im Cache. Sie können das Ablaufdatum des Caches nach Ihren Wünschen einstellen.

Pufferung

Pufferung kann die Kommunikation zwischen Client und Server effizienter machen, da sie einen Teil der Antwort hält, bis der Puffer gefüllt ist. Wenn die Antwort zu hoch ist als die tatsächliche Puffergröße, schreibt Nginx die Antwort auf die Festplatte, was zu Leistungsproblemen führen kann. Sie können die folgende Anweisung aktualisieren, um die Puffergröße Ihren Anforderungen entsprechend anzupassen.

Client_body_buffer_size: Bestimmt die tatsächliche Puffergröße, die verwendet wird, um Client-Antwortdaten zu speichern.

Client_header_buffer_size: Es verwaltet die Größe des Client-Headers. Normalerweise reicht es aus, den Wert auf 1k zu setzen.

Client_max_body_size: Es begrenzt die maximale Körperreaktion, die dem Client erlaubt ist. Wenn die Körpergröße ihren Wert überschreitet, gibt Nginx den Fehler mit „Request Entity Too Large“ aus.

Um die Puffergröße anzupassen, fügen Sie die folgende Direktive innerhalb des http-Abschnitts hinzu.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Zugriffsprotokollpufferung

Die Protokollierung ist eine der zentralen Rollen beim Debuggen des Problems und bei der Überwachung. Da die Protokollierung alle Anforderungsdaten speichert, die sowohl E/A-Zyklen als auch die CPU betreffen, die zu Leistungsproblemen führen. Sie können diese Auswirkungen reduzieren, indem Sie die Pufferung des Protokolls aktivieren. Sobald die Puffergröße ihr Limit erreicht, schreibt Nginx Pufferinhalte in das Protokoll. Sie können die Pufferung aktivieren, indem Sie der Zugriffsprotokolldirektive Pufferparameter mit Größenwerten hinzufügen.

access_log /var/log/nginx/access.log main buffer=16k;

Oder Sie können das Zugriffsprotokoll (falls nicht benötigt) wie folgt deaktivieren.

access_log off;

Begrenzen von Timeout-Werten

Das Begrenzen des Timeout-Werts verbessert die Leistung von Nginx. Nginx wartet für den angegebenen Zeitraum auf die Body- und Header-Anforderung des Clients. Erhalten sie die Antwortdaten nicht rechtzeitig, löst Nginx einen Timeout für den jeweiligen Client aus. Der Zeitüberschreitungswert kann durch die folgende Direktive verwaltet werden. Um die Zeitüberschreitungsdauer festzulegen, kopieren Sie die unten angegebene Anweisung in den http-Abschnitt.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

Client-Body- und Header-Timeout ist ein Zeitraum, in dem Nginx Header und Hauptteil aus der Client-Anfrage liest. Bei nicht rechtzeitiger Ausführung wird die Anfrage mit Timeout-Fehler abgebrochen. Keepalive_timeout ist die Dauer nach nginx close die Client-Verbindung Keep-Alive-Verbindung bleibt geöffnet. Send_timeout ist die Dauer, für die der Client die von Nginx gesendete Antwort erhalten muss.

Datei-Cache öffnen

Unter Linux ist fast alles eine Datei, wenn open_file_cache verwendet wird, werden der Dateideskriptor und alle Dateien, auf die häufig zugegriffen wird, auf dem Server zwischengespeichert. Insbesondere wenn die statischen Html-Dateien mit offenem Dateicache bereitgestellt werden, wird die Nginx-Leistung verbessert, da der Cache für ein bestimmtes Intervall geöffnet und im Speicher gespeichert wird. Fügen Sie die folgende Direktive von open_file_cache in den http-Abschnitt ein, um das Caching zu initiieren.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Fazit

Dies sind die 8 Möglichkeiten, die Nginx-Leistung durch einfache Änderung der Nginx-Konfigurationsdatei zu erhöhen. Ich hoffe, dass das Lesen dieses Artikels Ihnen hilft, die Leistungssteigerung von Nginx einzuleiten.