【问题标题】:Benchmarking Node.js对 Node.js 进行基准测试
【发布时间】:2012-05-22 14:36:12
【问题描述】:

我在 Mac OS X 下使用 ApacheBench 对 Node.js 进行基准测试,并将它与 Apache 2 进行比较。 我基本上有三个问题:

  1. 我对 Hello World 网页的基本测试结果如下: http://i.imgur.com/lgPMc.png Node.js 通过 Web 服务器以纯文本形式提供“Hello World”,而 Apache 2 提供也仅包含“Hello World”的纯文本文件。 我对 8000 个请求进行了相同的测试,它显示在最后 1000 个请求期间响应时间的增加相同。到底增加的原因是什么?

  2. Mac OS X 上是否有等效的 linux dstat 来记录测试期间的内存和 CPU 使用情况?

  3. 是否必须执行一组基本测试才能评估 Web 服务器的性能、吞吐量等?

【问题讨论】:

    标签: node.js apache performance apache2 benchmarking


    【解决方案1】:

    你说的 Apache 是什么意思?阿帕切雄猫?阿帕奇 2? Apache Hadoop(好吧,显然不是)?您应该指定要进行基准测试的代码是什么,平台是什么。根据您编写的内容,您可能会导致很多问题,在基本的 Hello World 测试中,NodeJS 应该表现更好,因为执行 PHP 脚本需要访问磁盘,而大多数 NodeJS Hello World 测试是在内存中的,因为您只需编写response.send("Hello World"); 这与 PHP 基准测试完全不同。

    最后增加的原因是你电脑的限制。您的计算机无法维持数百个打开的连接。 NodeJS 会一一响应所有连接,而 Apache 正在启动新线程,这将导致所有线程在最后耗尽,因为会有很多上下文交换,所以最后会出现缓慢。

    【讨论】:

    • 感谢您的回复。我添加了一些我最初应该包含的信息。
    • 关于PHP脚本:不是被服务器缓存,请求进来时从RAM中读取吗?
    • @johnny 是的,但是服务器需要知道文件是否在一段时间内发生了变化,所以仍然不公平
    【解决方案2】:
    1. 当您的测试查询服务器的速度快于其响应速度时,这会导致未解决的请求以越来越高的速度累积。它们的开销不成比例地影响响应时间。换句话说,您对您的服务器执行了 DDoS 攻击并发现了它的容量。

    2. 有unix 'top'命令,不过有点繁琐,还有ps

    3. Quick google 表示确实存在用于基准测试网络服务器的标准,例如 SpecWeb、WebStone 和 SURGE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2011-08-11
      • 2012-05-14
      • 2017-12-30
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多