【问题标题】:Tornado behind Nginx, should I use TCP nodelay config in python or nginx.conf?Nginx 背后的龙卷风,我应该在 python 或 nginx.conf 中使用 TCP nodelay 配置吗?
【发布时间】:2015-06-22 11:45:44
【问题描述】:

我有一个 Tornado 服务器在 Nginx 反向代理后面运行。代理配置为tcp_nodelay: on。我看到还有一个选项可以在 WebSocket 实例连接后调用 WebSocketHandler.set_nodelay(True)

这两个产生相同的效果吗?是否有使用其中一种的优点?还是两者兼有?

【问题讨论】:

    标签: nginx tcp websocket tornado


    【解决方案1】:

    一般来说,如果您使用nodelay 和代理,您应该在所有级别打开它以查看任何好处。否则,任何没有nodelay 的系统都会插入您试图避免的延迟。

    根据 nginxdocs for tcp_nodelay,它仅适用于连接处于 keep-alive 状态,因此对代理的 websocket 没有影响。

    【讨论】:

    • 感谢@ben-darnell 的及时回复!关于第二部分,您是说 nginx 上的任何代理 ws 都不会转换为 keep-alive 状态?那么这是否意味着只有 Tornado ws 处理程序的方法才会对该堆栈产生任何影响?
    • Websocket 连接永远不会处于保持活动状态,因此此设置不适用于它们。可能还有其他设置适用,或者在这种情况下默认情况下它可能处于打开状态。除非 nginx 开启TCP_NODELAY,否则在 Tornado 级别开启它不太可能产生太大影响,因为您的数据包将立即发送到 nginx,但是当应用 nagle 的算法时,它们将被阻止在 nginx 上。
    • 好的,所以至少我保证该路径上的消息会立即发送。现在需要让另一只小猪摆动(:
    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 2011-07-24
    • 1970-01-01
    • 2017-08-02
    • 2015-11-22
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多