2016-01-13 48 views
7

私は私のDjangoアプリケーションのための私のnginxの+ uwsgi設定に問題があり、私はuwsgiエラーログにこのエラーを得続ける:私はすべての要求のためにそれらを取得していない午前uwsgi例外IOError:書き込みエラー

Wed Jan 13 15:26:04 2016 - uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 296] during POST /company/get_unpaid_invoices_chart/ (86.34.48.7) IOError: write error

Wed Jan 13 15:26:20 2016 - uwsgi_response_write_headers_do(): Broken pipe [core/writer.c line 238] during GET /gestiune/print_pdf/nir/136194/ (89.122.255.186) IOError: write error

私は毎分カップルを手に入れます。 私はそれを探しました。これは、uginiが応答を書きたいと思っている時点で、nginxがuwsgiへの接続を閉じるために起こることを理解しています。これが原因で、私のnginxの設定で奇妙に見える 私はこれを持っている:

include uwsgi_params;

uwsgi_pass unix:/home/project/django/sbo_cloud/site.sock;

uwsgi_read_timeout 600;

uwsgi_send_timeout 600;

uwsgi_connect_timeout 60;

私はエラーが表示されるために要求がいずれも600秒のタイムアウトを超えていないことを確信しています。 これはなぜ起こるか考えてみましょうか?

おかげ

答えて

6

は、問題は、クライアントが接続を中止して、nginxのは中止するuwsgiを告げずに接続を閉じることです。 uwsgiが結果を返すと、ソケットはすでに閉じられています。 Nginxはログに499のエラーを書き込み、uwsgiはIOErrorをスローします。

Nginxにソケットを閉じないようにして、uwsgiが応答を返すのを待つことは、最適ではありません。

nginx.configでこれを入れて:

uwsgi_ignore_client_abort on; 

uwsgi接続を閉じるようにnginxのを伝えることが可能であるならばそれは明らかではありません。この問題についてもう一つの質問があります:(Propagate http abort/close from nginx to uwsgi/Django

関連する問題