【问题标题】:Node.js response time >= 200ms?Node.js 响应时间 >= 200 毫秒?
【发布时间】:2012-03-10 08:40:49
【问题描述】:

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

【问题讨论】:

  • 不,这不是我所期望的。你如何衡量请求时间? ab 给你什么结果?您使用的是哪个版本的节点?
  • @AndreySidorov 我已经更新了问题

标签: node.js latency response-time


【解决方案1】:

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

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

response.connection.setNoDelay(true);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我也在 Windows Server 2008 R2 上试过,没有出现额外的延迟,所以这似乎是一个特定于平台的问题。
    【解决方案3】:

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

    【讨论】:

    • 它可以是任何东西,节点在 Windows 上相当稳定,更有可能是他的网络/硬件问题
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多