我的应用程序使用nginx,在服务器端使用uWSGI.当我执行大量请求(响应时间> 4秒)时,会出现以下内容:
SIGPIPE: writing to a closed pipe/socket/fd (probably the client
disconnected) on request _URL_ (ip XX.XX.XX.XX) !!!
uwsgi_response_writev_headers_and_body_do(): Broken pipe
[core/writer.c line 287] during GET _URL_ (XX.XX.XX.XX)
OSError: write error
Run Code Online (Sandbox Code Playgroud)
似乎uWSGI尝试在流中写入,但此流已经关闭.当我检查nginx log(error.log)时:
upstream prematurely closed connection while reading response
header from upstream ...
Run Code Online (Sandbox Code Playgroud)
当然,我的客户端(REST客户端或浏览器)收到502错误.
我总是在~4s后得到这个错误.
但是,我不知道如何防止这个问题.我试着在我的nginx配置文件中设置一些参数:
location my_api_url {
[...]
uwsgi_buffer_size 32k;
uwsgi_buffers 8 32k;
uwsgi_busy_buffers_size 32k;
uwsgi_read_timeout 300;
uwsgi_send_timeout 300;
uwsgi_connect_timeout 60;
}
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在.我还尝试在uWSGI配置文件(wsgi.ini)中设置这些参数:
buffer-size=8192
ignore-sigpipe=true
ignore-write-errors=true
Run Code Online (Sandbox Code Playgroud)
在尝试优化响应时间之前,我希望这个问题有一个解决方案.我没有找到一个在另一篇文章中工作的人.我使用大量数据,因此在某些情况下,我的响应时间将在4到10秒之间.
希望你能帮我 :)
非常感谢提前.