Wie kann ich beobachten, was Nginx tut? (zu lösen: "1024 worker_connections sind nicht genug")

8

Ich habe eine sehr verkehrsarme Site auf nginx mit 4 Mitarbeitern und jeweils 1024 Verbindungen.

Alle paar Stunden sehe ich im Fehlerprotokoll "1024 worker_connections sind nicht genug", und meine Site wird langsamer / wird flockig. Ein Nginx-Neustart löst das Problem für die nächsten Stunden vollständig.

Offensichtlich passiert etwas Seltsames. Ich kann auf keinen Fall 4k gleichzeitige Benutzer meiner Anwendung bedienen.

Gibt es eine Möglichkeit, außer im Zugriffsprotokoll (das normal aussieht) genauer zu beobachten, was Nginx tut?

Gibt es eine berüchtigte Konfigurationskombination, die dazu führen kann, dass alte Verbindungen offen und nicht geschlossen gehalten werden?

Vielen Dank.

bearbeiten das sieht nicht richtig aus

# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
John Bachir
quelle
Verwenden Sie Proxypass?
Dan R
Nein, ich verwende keine Art von Proxy-Setup. Es ist eine Rails-Site für Passagiere.
John Bachir
1
Versuchen Sie es vielleicht mit nginx.org/en/docs/debugging_log.html , um zu sehen, mit welchen Anforderungen dies geschieht. Ich bin nicht mit Passagier / Schienen vertraut. Wenn sich dies auf dem Port befindet, der eine Verbindung zu Webclients herstellt, hat der Client die Verbindung geschlossen, aber nginx hat auf seiner Seite nicht geschlossen.
Dan R

Antworten:

7

Ohne Proxy Pass / Reverse Proxy

max_clients = worker_processes * worker_connections

Mit Reverse Proxy

max_clients = (worker_processes * worker_connections ) / (X * 2)

2 liegt daran, dass Sie eine Verbindung zu dem herstellen, was Sie vertreten

X besteht jedoch aus vielen gleichzeitigen Verbindungen, die diese Clients zu Ihnen herstellen

Um zu sehen, welche Verbindungen herumhängen, können Sie laufen lsof -i :PORT. Es werden alle für Nginx offenen Verbindungen und deren Status angezeigt.

Dan R.
quelle
versuche das… lsof 4.81 auf Ubuntu… "illegaler Optionscharakter: I"
John Bachir
siehe lsof Ausgabe in Bearbeitung oben
John Bachir
1
wollte nicht das -i
Dan R