我最近在服务器端的N语延迟和客户端的Nagle算法的组合,产生了可识别的40ms延迟,在此处记录:http://www.boundary.com/blog/2012/05/know-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附近)?
谢谢!
答案 0 :(得分:0)
我知道这个问题很旧,但是我还是要回答。
由于它看起来像不是可以通过任何nginx配置使用此选项
有nginx tcp_nodelay指令可以处理它。通常将其与tcp_nopush和sendfile结合使用。
有关nginx的更多优化,请阅读此article。