linux C 客户端向服务器发送延迟FIN ACK(500ms)
为什么客户
我有一个node.js客户端(10.177.62.7)从服务器(10.177.0.1)的http休息服务请求一些数据.客户端只是使用node.js http.request()方法(agent = false).客户端在Ubuntu 11.10框. 为什么客户端在475ms之后发送FIN ACK?为什么这么慢?他应该立即发送FIN ACK.我有很多这样的情况.整个流量的约1%是延迟FIN ACK的请求. 客户端上的Cpu空闲大概是99%,所以没有什么可以排除CPU的. 如何调试?可能是什么 截图第二列是数据包之间经过的时间. Link to bigger picture. 解决方法 此行为是 RFC1122 TCP stack的延迟ACK功能.通常你应该把TCP_QUICKACK选项添加到你的Linux TCP socket到disable delayed ACK中,但是我觉得JavaScript Node.js API是不明显的(我只看到了TCP_NODELAY选项的socket.setNoDelay). 所以你的想法应用一个system-wide change on TCP stack似乎很好,但我发现没有sysctl匹配这个套接字选项的行为.这是另一个full list with explanation. (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c C 为什么在调用recv系统调用时调用sigprocmask?
- linux – Systemtap PPC32支持
- linux – pthreads线程在堆栈中预先故障的最佳方法是什么?
- linux – kswapd在使用交换时经常使用100%的CPU
- LINUX教程:UFW使用指南:通用防火墙规则和命令
- linux – Dovecot启动和运行,但没有监听任何端口
- LINUX学习:shell的编程结构体(函数、条件结构、循环结构)
- linux – nginx:[emerg]未知指令“”在/etc/nginx/sites-e
- regex – 使用sed对URL进行复杂更改
- linux – 如何执行cron作业故障转移?