GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erhalten Sie die beste Leistung vom Nginx-Server

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


Linux
  1. Linux:Wie bekomme ich alle Anmeldeprotokolle vom System?

  2. Verwenden von openssl, um das Zertifikat von einem Server abzurufen

  3. Wie bringe ich meinen Golang-Webserver dazu, im Hintergrund zu laufen?

  4. Wie erhalte ich die URL der Dropbox-Datei von der Befehlszeile?

  5. Wie erhalte ich meine IP-Adresse über die Befehlszeile?

So installieren Sie Nginx auf Fedora 22

So installieren Sie NGINX unter Ubuntu 20.04

So installieren Sie Nginx unter CentOS 7

So konfigurieren Sie NGINX auf einem CentOS 7-Server

Wie kann ich Protokollmeldungen vom LAMP-Server unter Ubuntu 10.04 erhalten?

Wie kann ich die Länge einer Videodatei von der Konsole abrufen?