Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 将TCP_QUICKACK与nginx一起使用_Sockets_Nginx_Tcp_Nagle - Fatal编程技术网

Sockets 将TCP_QUICKACK与nginx一起使用

Sockets 将TCP_QUICKACK与nginx一起使用,sockets,nginx,tcp,nagle,Sockets,Nginx,Tcp,Nagle,我最近被服务器端的延迟ACK和客户端的Nagle算法相结合所困扰,产生了可识别的40ms延迟,如下所述: 解决此问题的最简单方法是在客户端使用TCP_节点延迟(或者TCP_CORK在我们的情况下也可以使用)。但是,我无法直接控制客户端,因此希望尝试服务器端修复。似乎TCP_QUICKACK选项在这里就可以做到这一点,因为服务器会立即确认,从而导致客户端的Nagle算法毫不延迟地发送下一个数据包 令人惊讶的是,我找不到任何关于以前尝试过这种方法的人的参考资料。这是个坏主意吗(除了我们将发送更多可能

我最近被服务器端的延迟ACK和客户端的Nagle算法相结合所困扰,产生了可识别的40ms延迟,如下所述:

解决此问题的最简单方法是在客户端使用TCP_节点延迟(或者TCP_CORK在我们的情况下也可以使用)。但是,我无法直接控制客户端,因此希望尝试服务器端修复。似乎TCP_QUICKACK选项在这里就可以做到这一点,因为服务器会立即确认,从而导致客户端的Nagle算法毫不延迟地发送下一个数据包

令人惊讶的是,我找不到任何关于以前尝试过这种方法的人的参考资料。这是个坏主意吗(除了我们将发送更多可能是免费的ACK之外)?由于该选项似乎不可通过任何nginx配置使用,因此直接修补nginx(可能在附近)是最好的选择吗


谢谢

我知道这个问题很老,但还是让我来回答吧

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

有nginx指令来处理它。它通常与和结合在一起


要了解更多nginx优化,请阅读此文。

我在研究时发现了一句有趣的引语,作者是Nagle本人,“[…]真正的问题是ACK延迟。200ms”ACK延迟“计时器是一个坏主意,伯克利的一些人在1985年左右陷入了BSD,因为他们没有真正理解这个问题。延迟确认意味着应用程序级别将在200毫秒内收到回复。TCP继续使用延迟的ACK,即使每次都输了。如果当时我还在网络上工作,那就不会发生了。但我当时正在为一家名为Autodesk的初创公司做事。”