【发布时间】:2015-06-22 11:45:44
【问题描述】:
我有一个 Tornado 服务器在 Nginx 反向代理后面运行。代理配置为tcp_nodelay: on。我看到还有一个选项可以在 WebSocket 实例连接后调用 WebSocketHandler.set_nodelay(True)。
这两个产生相同的效果吗?是否有使用其中一种的优点?还是两者兼有?
【问题讨论】:
标签: nginx tcp websocket tornado
我有一个 Tornado 服务器在 Nginx 反向代理后面运行。代理配置为tcp_nodelay: on。我看到还有一个选项可以在 WebSocket 实例连接后调用 WebSocketHandler.set_nodelay(True)。
这两个产生相同的效果吗?是否有使用其中一种的优点?还是两者兼有?
【问题讨论】:
标签: nginx tcp websocket tornado
一般来说,如果您使用nodelay 和代理,您应该在所有级别打开它以查看任何好处。否则,任何没有nodelay 的系统都会插入您试图避免的延迟。
根据 nginxdocs for tcp_nodelay,它仅适用于连接处于 keep-alive 状态,因此对代理的 websocket 没有影响。
【讨论】:
TCP_NODELAY,否则在 Tornado 级别开启它不太可能产生太大影响,因为您的数据包将立即发送到 nginx,但是当应用 nagle 的算法时,它们将被阻止在 nginx 上。