uwsgi 抛出由 uwsgi_response_write_body_do 损坏的管道引起的 IO 错误

新手上路,请多包涵

我的应用程序是一个 uwsgi+django 设置。我用gevent做性能测试,并发运行1200个请求。此时,uwsgi 将抛出一个 IO 错误并显示以下日志消息:

 uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 260]
IOError: write error

姜戈 1.4.0

uwsgi:1.9.13

蟒蛇:2.6

TCP 侦听队列:1000

这个破管错误的原因是什么?

原文由 linbo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 958
1 个回答

当 NGINX 开始向 uWSGI 发出请求但 uWSGI 响应时间过长,然后 NGINX 关闭与 uWSGI 的连接时,就会发生这种情况。当 uWSGI 最终完成时,它试图将它的响应返回给 NGINX,但是 NGINX 更早地关闭了连接,所以 uWSGI 抛出了一个 I/O 错误。

所以这可能意味着你的 uWSGI 进程花费的时间太长了。

更新:

如果你想,uWSGI 的 Harakiri 模式可能有助于自动终止如此耗时的进程: https ://uwsgi-docs.readthedocs.io/en/latest/FAQ.html#what-is-harakiri-mode 你可能不想这样做是因为一个进程可能正在完成一些长查询或可能需要的东西。

原文由 gitaarik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题