3

我正在做一个 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 的远程请求不会产生延迟。我将在其他操作系统上尝试这个。

4

3 回答 3

3

它是在 Windows 上默认设置的 Nagle 算法(也可在 Azure 上的 Windows 2008 R2 上重现)。

解决方法 - 在响应套接字上禁用它,如下所示:

response.connection.setNoDelay(true);
于 2012-04-16T17:41:27.583 回答
2

获得 5 毫秒延迟,3 毫秒下载,总共 8 毫秒。它各不相同,但我见过的最高总时间约为 14 毫秒。

虽然在 OS X 10.7.3 上运行。我将不得不在 Windows 上尝试看看。

于 2012-02-20T03:15:47.077 回答
1

我正在运行 Ubuntu 64 位和节点版本 0.6.10,最多延迟 20 毫秒。我相信是windows的问题,因为node在windows上还不是很完美,需要等待更稳定一些。我建议您将您的问题发布到邮件列表。

于 2012-02-20T02:37:28.177 回答