Node.js响应时间> = 200ms?

时间:2012-02-19 22:16:12

标签: node.js latency response-time

我正在进行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一起出现,还是可能是其他内容的结果?

按需澄清:

  • 节点js版本:0.6.11
  • 操作系统:Windows Server 2003 R2 SP2
  • 服务器环境:VMWare Workstation 8.0.0
  • 工作负载实用程序:jMeter 2.6(1个线程工作负载)

更新

延迟行为仅在远程请求期间出现。如果执行本地工作负载测试,则延迟将接近于零。但是,它不能是网络延迟问题,因为在同一服务器上针对IIS的远程请求不会产生延迟。我打算在其他操作系统上试一试。

3 个答案:

答案 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上仍然不完美,不得不等待更多的稳定性。我建议你将你的问题发布到邮件列表中。