我正在进行Node.js工作负载测试,我刚刚遇到了一个有趣的行为。即使对于最简单的逻辑,HTTP服务器的最短响应时间也是200毫秒:
var http = require("http");
http.createServer(function(request, response) {
response.write("Hello World");
response.end();
}).listen(8080);
在Windows Server 2003上运行:
> node main.js
我在网上搜索过,但没有找到任何相关信息。测试在本地网络上完成,而且使用其他网络服务器(即IIS),我可以实现即时响应时间。不要误会我的意思,我看到这种行为背后的理性解释,所以这是我的问题:
这是默认行为与node.js一起出现,还是可能是其他内容的结果?
按需澄清:
更新
延迟行为仅在远程请求期间出现。如果执行本地工作负载测试,则延迟将接近于零。但是,它不能是网络延迟问题,因为在同一服务器上针对IIS的远程请求不会产生延迟。我打算在其他操作系统上试一试。
答案 0 :(得分:3)
默认情况下,在Windows上设置Nagle算法(在Azure上的Windows 2008 R2上也可重现)。
解决方法 - 在响应套接字上禁用它,如下所示:
response.connection.setNoDelay(true);
答案 1 :(得分:2)
获得5毫秒延迟,3毫秒下载,总共8毫秒。 它有所不同,但我见过的最高值约为14毫秒。
尽管在OS X 10.7.3上。我将不得不尝试在Windows上看看。
答案 2 :(得分:1)
我正在运行Ubuntu 64位和节点版本0.6.10,最多我得到20ms的延迟。我认为这是一个Windows问题,因为Node在Windows上仍然不完美,不得不等待更多的稳定性。我建议你将你的问题发布到邮件列表中。