繁体   English   中英

uWSGI 的 socket-timeout/http-timeout/harakiri 有什么区别?

[英]What's the difference between uWSGI's socket-timeout/http-timeout/harakiri?

我编写了一个由 uWSGI 提供服务的简单 WSGI 应用程序(使用 Flask)(即没有其他 HTTP 服务器,而是 uWSGI),它只支持单个 PUT 路由,客户端可以使用该路由上传文件(大小可能约为 400MB),并在服务器上进行处理然后送回去。

在 uWSGI 日志中,一段时间后我注意到两种超时错误。 通常是发送响应时超时:

Feb 02 20:46:30 myserv uwsgi[18948]: uwsgi_response_sendfile_do() TIMEOUT !!!
Feb 02 20:46:30 myserv uwsgi[18948]: OSError: write error
Feb 02 20:46:30 myserv uwsgi[18948]: [pid: 18954|app: 0|req: 1795/3935] aa.bb.cc.dd () {32 vars in 455 bytes} [Fri Feb  2 20:46:06 2018] PUT /sample.exe => generated 0 bytes in 24314 msecs via sendfile() (HTTP/1.1 200) 6 headers in 258 bytes (3353 switches on core 0)

但有时,接收 PUT 请求时也会超时:

Feb 03 20:18:32 signserv uwsgi[18948]: [pid: 18953|app: 0|req: 2975/5670] aa.bb.cc.dd () {32 vars in 455 bytes} [Sat Feb  3 20:18:02 2018] PUT /samplefile.exe => generated 0 bytes in 29499 msecs via sendfile() (HTTP/1.1 200) 6 headers in 258 bytes (2930 switches on core 0)
Feb 03 20:20:30 signserv uwsgi[18948]: [uwsgi-body-read] Timeout reading 16384 bytes. Content-Length: 354414781 consumed: 0 left: 354414781

一些调试表明,这通常发生在非常慢(即具有高负载)的客户端上。

我想通过增加一些超时来缓解这种情况,但 uWSGI 似乎支持过多的超时,我不清楚其中哪些是相关的。 我确定了三个超时,听起来我可能想增加它们,但我很难找到有关它们如何不同的文档:

  • socket-timeout
  • http-timeout
  • harakiri

任何人都可以阐明这些超时的影响,它们的默认值是什么以及应该调整哪些(如果有)以避免上述问题?

简单来说, harakiri是 uWSGI 超时, http-timeoutsocket-timeout是平衡器/代理服务器超时。

当这些参数不同时,日志中可能会出现混淆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM