栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

金字塔流反应体

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

金字塔流反应体

我发现了问题。原来我的应用程序代码很好,问题出在Waitress和nginx上:

  1. Pyramid使用的默认Web服务器Waitress以18000字节的块缓冲所有输出(有关详细信息,请参阅此问题)。

  2. 问题的根源是我放在Pyramid应用程序前面的Web服务器nginx对我隐藏的,该服务器 缓冲响应。

(1)可以通过以下任一方法解决:

  • send_bytes = 1
    在.ini文件中配置的女服务员。这种修复的流问题,但让你的整个应用 慢。正如@Zitrax所提到的,您可以使用较高的值恢复某些速度,但是任何大于1的值都可能会使消息卡在缓冲区中。

  • 切换到Gunicorn。我不知道gunicorn是否仅使用较小的缓冲区,或者使用时,它的性能是否更好

    app_iter
    ,但是它可以正常工作,并保持我的应用程序快速运行。

(2)可以通过配置nginx禁用流路由缓冲来解决。

您需要

proxy_buffering off
在nginx
conf中进行设置。此设置适用于通过托管的网站
proxy_pass
。如果您不使用
proxy_pass
,则可能需要其他设置。

  • 您可以将nginx配置为基于请求标头为每个响应动态启用/禁用缓冲,如本主题中的问题所示(EventSource / Server-Sent Events的一种很好的解决方案)

  • 您也可以

    location
    在nginx conf 中的一个块中配置它。如果您使用的是EventSource以外的东西,并且不希望收到特定的标头,或者如果您使用的是EventSource,但想从普通的浏览器选项卡中调试响应,而无法发送
    Accept
    标头,则这样做很好根据您的要求。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号