uWSGI가 응답을 중단하고 nginx와의 연결이 끊김

uWSGI가 응답을 중단하고 nginx와의 연결이 끊김

저는 Python으로 작성되고 uWSGI에서 실행되며 nginx를 통해 제공되는 작은 웹 애플리케이션을 실행하고 있습니다. 다운로드용 ZIP 파일을 생성하는 구성 요소가 있는데, 때로는 용량이 상당히 클 수 있습니다(수 GB). nginx와 uWSGI 사이의 연결이 끊어지고 요청이 중단되는 경우가 종종 있습니다. nginx는 더 많은 응답 데이터를 기대하면서 연결을 열어두기 때문에 브라우저가 시간 초과에 직면하는 동안 잘린 응답을 무시합니다. 애플리케이션은 적절한 Content-Length 헤더를 생성합니다.

uWSGI 로그에서:

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 [...] !!!

나는 이미 uWSGI 구성에서 및 을 설정 socket-timeout했지만 아무 소용이 없습니다. nginx conf에는 다음 이 포함됩니다.socket-send-timeoutsocket-write-timeout180uwsgi_read_timeout 180s;uwsgi_buffering off;

효과는 대부분 재현 가능합니다. 특히 반응이 큰 경우에는 대부분 발생하지만 동일한 오프셋에서는 발생하지 않습니다. 요청을 반복해서 반복하면 결국 완료될 수 있습니다.

답변1

내 애플리케이션이나 nginx 모두 문제가 아닌 것으로 밝혀졌지만 둘 다 앞에 잘못된 패킷 필터가 있습니다.

관련 정보