uWSGI在处理大请求时引发了OSError:写入错误。

13 浏览
0 Comments

uWSGI在处理大请求时引发了OSError:写入错误。

我的应用程序在服务器端使用nginx和uWSGI。当我发起一个大请求(响应时间> 4秒)时,会出现以下情况:

SIGPIPE:在请求_URL_(IP XX.XX.XX.XX)期间写入已关闭的管道/套接字/文件描述符(可能是客户端断开连接)!
uwsgi_response_writev_headers_and_body_do():管道中断
    [core/writer.c line 287]在GET _URL_(XX.XX.XX.XX)期间
OSError:写入错误

似乎uWSGI试图写入一个流,但是这个流已经被关闭了。

当我检查nginx日志(error.log)时:

从上游提前关闭了与上游的连接
    读取响应标头...

当然,我的客户端(REST客户端或浏览器)会收到502错误。

我总是在大约4秒后得到这个错误。

然而,我不知道如何解决这个问题。

我尝试在我的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;

}

但问题依然存在。

我还尝试在uWSGI配置文件(wsgi.ini)中设置这些参数:

buffer-size=8192

ignore-sigpipe=true

ignore-write-errors=true

在尝试优化响应时间之前,我希望这个问题有一个解决方案。我在处理大量数据,所以对于某些情况,我的响应时间将在4-10秒之间。

希望你能帮助我 🙂

非常感谢。

0