8

我最近被服务器端的延迟 ACK 和客户端的 Nagle 算法相结合,产生了可识别的 40 毫秒延迟,此处记录:http: //www.boundary.com/blog/2012/ 05/知道-a-delay-nagles-algorithm-and-you/

解决此问题的最简单方法是在客户端使用 TCP_NODELAY(或者 TCP_CORK 在我们的情况下也应该工作)。但是,我无法直接控制客户端,并想尝试服务器端修复。似乎 TCP_QUICKACK 选项在这里可以解决问题,因为服务器会立即 ACK,从而导致客户端的 Nagle 算法立即发送下一个数据包。

令人惊讶的是,我找不到任何关于以前尝试过这个的人的参考。这是一个坏主意吗(除了我们将发送更多,可能是免费的 ACK 的事实)?由于看起来这个选项不能通过任何 nginx 配置获得,因此最好直接修补 nginx(可能在http://hg.nginx.org/nginx/file/dcae651b2a0c/src/http/ngx_http_request 附近)。 c#l3025 )?

谢谢!

4

1 回答 1

0

我知道这个问题很老,但无论如何让我回答。

因为它看起来不像这个选项可以通过任何 nginx 配置使用

有 nginx tcp_nodelay指令来处理它。它通常与tcp_nopushsendfile结合使用。

更多 nginx 优化,请阅读这篇文章

于 2020-12-07T07:01:26.220 回答