uWSGI bricht Antworten ab, verliert die Verbindung zu nginx

uWSGI bricht Antworten ab, verliert die Verbindung zu nginx

Ich führe eine kleine Webanwendung aus, die in Python geschrieben ist, in uWSGI läuft und über nginx bereitgestellt wird. Es gibt eine Komponente, die ZIP-Dateien zum Herunterladen generiert, die gelegentlich recht groß sein können (mehrere GB). Es kommt häufig vor, dass die Verbindung zwischen nginx und uWSGI unterbrochen und die Anforderung abgebrochen wird. nginx ignoriert die gekürzte Antwort, während der Browser ein Timeout hat, weil er die Verbindung offen hält und weitere Antwortdaten erwartet. Die Anwendung generiert einen richtigen Content-Length-Header.

Aus dem uWSGI-Protokoll:

uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 429] during GET [...]
OSError: write error
SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request [...] !!!

Ich habe bereits socket-timeout, socket-send-timeoutund socket-write-timeoutin 180der uWSGI-Konfiguration eingestellt, ohne Erfolg. Die nginx-Konfiguration enthält uwsgi_read_timeout 180s;unduwsgi_buffering off;

Der Effekt ist größtenteils reproduzierbar, da er meistens auftritt, insbesondere bei großen Antworten, aber nie mit demselben Versatz. Das wiederholte Wiederholen der Anfrage kann schließlich zum Abschluss führen.

Antwort1

Es stellte sich heraus, dass weder meine Anwendung noch Nginx das Problem waren, sondern ein fehlerhafter Paketfilter vor beiden.

verwandte Informationen