Anzahl der Nginx-Worker-Prozesse

23

Ich richte Nginx für eine Drupal-Installation ein und finde anscheinend widersprüchliche Informationen zur Einstellung der Nginx-Arbeitsprozesse. Eine Site sagt, Sie brauchen zwei, eine sagt, Sie brauchen fünf, eine sagt, einer pro Prozessor ...

Wie soll ich die Anzahl der Nginx-Worker-Prozesse auswählen? Wenn es einen Unterschied macht, ist es eine Gast-VM in einem VMWare-Cluster, und ich habe ihm einen virtuellen Prozessor gegeben.

ceejayoz
quelle

Antworten:

16

Nginx im Gegensatz zu Apache und anderen Prozess-pro-Verbindung-Webservern. Es wird ein Hauptprozess zum Starten und Überwachen einer kleinen Anzahl von Arbeitsprozessen verwendet, die die Verbindungen tatsächlich verarbeiten. Meine Empfehlung ist, mit der Standardanzahl von Arbeitnehmern zu beginnen, die 1 ist.

worker_processes  1;

Sie müssen diesen Wert nur erhöhen, wenn Sie feststellen, dass der Nginx-Worker zu viel Zeit für E / A-Blockierungen verwendet. Dies geschieht erst, wenn Hunderte von Anfragen pro Sekunde bearbeitet werden.

Möglicherweise finden Sie diese Einstellungen auch nützlich.

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
Dave Cheney
quelle
1
Können Sie beschreiben, wofür "worker_rlimit_nofile 8192" verwendet wird?
Der Pixelentwickler
wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile . Dies weist den Arbeiter an, sein ulimit zu erhöhen.
Dave Cheney
15

Auf SMP-Systemen sollten mindestens nCPU-Worker-Prozesse gestartet werden: auf Quad-Core-Systemen (vier usw.).

Wenn Sie einige Websites mit vielen statischen Inhalten bereitstellen möchten, sollten Sie mehr Worker hinzufügen - einen pro Datenträger.

Wenn Ihr Festplattensubsystem zu schlecht oder zu hoch geladen ist, werden Nginx-Worker-Prozesse möglicherweise für E / A-Vorgänge gesperrt und können andere Anforderungen nicht bedienen. In diesem Fall sollten Sie die Anzahl der Worker-Prozesse auf einen geeigneten Wert erhöhen (z. B. zehn) oder Speicher für den Festplatten-Cache hinzufügen.

Schauen Sie sich den Ausdruck "ps ax" an: Arbeiter, die sich im Status "D" befinden, sind gesperrt. Erhöhen Sie, bis mindestens nCPU-Worker-Prozesse nicht mehr blockiert werden.

Vadim
quelle