性能测试期间NodeJS空闲操作

时间:2016-08-25 15:43:31

标签: javascript node.js google-chrome jmeter performance-testing

这里的nodejs相对新手试图找出新构建的应用程序中的性能问题。

我正在我的节点0.12.7应用程序上运行性能测试,我发现服务器间歇性地挂起。达到该状态需要重启。在确认没有内存泄漏(进程堆不超过500 MB而默认的最大堆大小为1.4GB,我理解)之后,我们开始检查CPU配置文件。我使用this snippet of code依赖于v8-profiler来获取常规配置文件

这是我们从jmeter遇到的一个图表(尽管服务器没有挂起)Jmeter graph of requests

我们通过加载CPU配置文件在Chrome中绘制了火焰图。我期待在这一点上发现JS卡在某处,但我发现在那个时间范围内,节点服务器很长时间处于空闲状态。任何人都可以帮助我理解服务器在被客户端请求轰炸时保持闲置的可能原因是什么,并最终在10分钟后恢复继续运行?

我遗憾地丢失了数据以检查16:48:10和16:57:40之间的响应是错误还是成功,但很可能它们是来自代理的错误响应,因为节点没有关心世界。

以下是Chrome中的火焰图

  • 16.47之前, Flame chart - normal operation (just before 16:47)

  • 约16.47小时
    Flame chart - around 16.47

  • 16.47小时后几分钟 Flame chart - between 16.47 and 16.57

1 个答案:

答案 0 :(得分:1)

这可能有多种原因。

  1. 服务器不接受请求。您是否看到达到峰值后吞吐量下降?
  2. 您是否检查过服务器日志以查看是否记录了任何异常?
  3. 尝试绘制测试持续时间的响应时间和吞吐量趋势。
  4. 您可能希望在代码中看到任何IO绑定操作。
  5. 检查处理器队列长度。如果进程没有获得足够的CPU,你应该看到它正在建立。