Sie können fast jede Einstellung tunen, aber dieser Beitrag konzentriert sich auf die wenigen Einstellungen, bei denen die meisten Benutzer von der Einstellung profitieren. Es gibt Einstellungen, die Sie nur dann ändern sollten, wenn Sie über umfassende Kenntnisse von NGINX und Linux verfügen. So wissen Sie, wie Sie die beste Leistung aus dem Nginx-Server herausholen
HI Leute! In diesem Beitrag sehen wir im Wesentlichen das NGINX-Tuning mit seiner Konfigurationsdatei, die sich unter /etc/nginx/nginx.conf befindet
NGINX ist bekannt als Hochleistungs-Load-Balancer, Cache und Webserver, der über 40 % der am stärksten frequentierten Websites der Welt betreibt. Für die meisten Anwendungsfälle funktionieren die standardmäßigen NGINX- und Linux-Einstellungen gut, aber das Erreichen einer optimalen Leistung erfordert manchmal ein wenig Feinabstimmung. In diesem Blogbeitrag werden einige der NGINX- und Linux-Einstellungen erörtert, die beim Optimieren eines Systems zu berücksichtigen sind.
Arbeitsprozesse
NGINX kann mehrere Worker-Prozesse ausführen, von denen jeder eine große Anzahl gleichzeitiger Verbindungen verarbeiten kann. Mit den folgenden Direktiven können Sie die Anzahl der Worker-Prozesse steuern und wie sie mit Verbindungen umgehen
worker_processes
Die Anzahl der NGINX-Arbeitsprozesse (der Standardwert ist 1). In den meisten Fällen funktioniert es gut, einen Arbeitsprozess pro CPU-Kern auszuführen, und wir empfehlen, diese Direktive auf auto zu setzen, um dies zu erreichen. Es kann vorkommen, dass Sie diese Zahl erhöhen möchten, z. B. wenn die Worker-Prozesse viele Festplatten-E/A ausführen müssen.
worker_connections
Die maximale Anzahl von Verbindungen, die jeder Arbeitsprozess gleichzeitig verarbeiten kann. Der Standardwert ist 512, aber die meisten Systeme verfügen über genügend Ressourcen, um eine größere Zahl zu unterstützen. Die geeignete Einstellung hängt von der Größe des Servers und der Art des Datenverkehrs ab und kann durch Tests ermittelt werden.
Keepalive-Verbindungen
Keepalive-Verbindungen können einen großen Einfluss auf die Leistung haben, indem sie den CPU- und Netzwerk-Overhead reduzieren, der zum Öffnen und Schließen von Verbindungen erforderlich ist. NGINX beendet alle Client-Verbindungen und erstellt separate und unabhängige Verbindungen zu den Upstream-Servern. NGINX unterstützt Keepalives sowohl für Clients als auch für Upstream-Server. Die folgenden Anweisungen beziehen sich auf Client-Keepalives:
keepalive_requests
Die Anzahl der Anfragen, die ein Client über eine einzelne Keepalive-Verbindung stellen kann. Der Standardwert ist 100, aber ein viel höherer Wert kann besonders beim Testen mit einem Tool zur Lastgenerierung nützlich sein, das im Allgemeinen eine große Anzahl von Anfragen von einem einzelnen Client sendet.
keepalive_timeout
Wie lange eine inaktive Keepalive-Verbindung offen bleibt.
Die folgende Direktive bezieht sich auf Upstream-Keepalives
am Leben bleiben
Die Anzahl der inaktiven Keepalive-Verbindungen zu einem Upstream-Server, die für jeden Arbeitsprozess geöffnet bleiben. Es gibt keinen Standardwert.
Um Keepalive-Verbindungen zu Upstream-Servern zu aktivieren, müssen Sie auch die folgenden Anweisungen in die Konfiguration aufnehmen:
Zugriffsprotokollierung
Das Protokollieren jeder Anforderung verbraucht sowohl CPU- als auch E/A-Zyklen, und eine Möglichkeit, die Auswirkungen zu verringern, besteht darin, die Zugriffsprotokollpufferung zu aktivieren. Anstatt für jeden Protokolleintrag einen separaten Schreibvorgang durchzuführen, puffert NGINX beim Puffern eine Reihe von Einträgen und schreibt sie zusammen in einer einzigen Operation in die Datei.
Protokolleinträge werden auch geschrieben, wenn ein Arbeitsprozess seine Protokolldateien erneut öffnet oder herunterfährt. Um die Zugriffsprotokollierung vollständig zu deaktivieren, fügen Sie den off-Parameter in die access_log-Direktive ein.
Datei senden
Der Systemaufruf sendfile() des Betriebssystems kopiert Daten von einem Dateideskriptor zu einem anderen und erreicht dabei oft Zero-Copy, was TCP-Datenübertragungen beschleunigen kann. Damit NGINX es verwenden kann, fügen Sie die sendfile-Direktive in den http-Kontext oder einen Server- oder Standortkontext ein. NGINX kann dann zwischengespeicherte oder auf der Festplatte gespeicherte Inhalte in einen Socket schreiben, ohne dass der Kontext in den Benutzerbereich wechselt, wodurch das Schreiben extrem schnell wird und weniger CPU-Zyklen verbraucht. Beachten Sie jedoch, dass Daten, die mit sendfile() kopiert werden, den Benutzerbereich umgehen, nicht der regulären NGINX-Verarbeitungskette und Filtern unterliegen, die den Inhalt ändern, wie z. B. gzip. Wenn ein Konfigurationskontext sowohl die sendfile-Direktive als auch Direktiven enthält, die einen Inhaltsänderungsfilter aktivieren, deaktiviert NGINX automatisch sendfile für diesen Kontext.
Sie wissen also bereits, wie Sie die beste Leistung aus dem Nginx-Server herausholen
Nginx-Website