Ter*_*ska 10 linux networking tcp tcpdump node.js
我有一个node.js客户端(10.177.62.7)从服务器(10.177.0.1)请求来自http rest服务的一些数据.客户端只是使用node.js http.request()方法(agent = false).客户端在Ubuntu 11.10框上.
为什么客户端在475ms后发送FIN ACK?为何这么慢?他应该立即发送FIN ACK.我有很多这样的情况.大约1%的整个流量是带有延迟FIN ACK的请求.
客户端上的Cpu空闲大约是99%,所以没有什么能耗尽CPU.
如何调试?会是什么呢?我需要调整任何sysctl选项吗?
屏幕截图第2列是数据包之间经过的时间.
此行为是RFC1122 TCP 堆栈的延迟 ACK 功能。
TCP_QUICKACK
通常,您应该向Linux TCP 套接字添加选项以禁用延迟 ACK,但我认为这对于 JavaScript Node.js API 来说并不明显(我只看到了socket.setNoDelay
选项TCP_NODELAY
)。
因此,您在 TCP 堆栈上应用系统范围的更改的想法似乎不错,但我发现没有sysctl
匹配此套接字选项行为。这是另一个带有解释的完整列表。
归档时间: |
|
查看次数: |
4128 次 |
最近记录: |