背景
我在C#中实现了一个HTTP服务器。 使用ab我发现了一个奇怪的性能问题。 每个请求花费5毫秒时间保持关闭状态,但保持活动时间为40毫秒!通过暂时启用NoDelay来实现套接字“Flush”
将测试页生成为单个字节[],然后使用单个套接字作为回复发送。发送调用。
原因是据我所知,Nagle在TCP协议栈中使用的算法。
TCP Flush?
到目前为止,我在每个HTTP请求服务结束时都使用NoDelay属性。
socket.NoDelay = true;
socket.NoDelay = false;
现在确实解决了这个问题。但我没有文档来备份我的发现。
这是在linux/mono系统上测试的。
是否有标准的方法来刷新TCP连接?
相关
This answer是解决同样的问题。这里的区别在于我只想暂时禁用算法。
如果只有我们有一个[TCP Nagle刷新](http://stackoverflow.com/questions/6726832/what-happened-to-the-tcp-nagle-flush)... – 2011-07-18 13:56:42
难道你是在运行窗口有不同的实现? – hultqvist 2011-07-18 22:13:18