javascript - 性能测试期间 NodeJS 空闲操作

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

这里是 Nodejs 的新手,试图找出新建应用程序中的性能问题。

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

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

我们通过加载 CPU 配置文件在 Chrome 中绘制了火焰图。我本以为此时JS会卡在某个地方,但我发现正是在这个时间范围内, Node 服务器闲置了很长时间。谁能帮助我了解服务器在受到客户端请求轰炸时保持空闲状态并最终在 10 分钟后恢复继续运行的可能原因是什么?

不幸的是,我丢失了数据来检查 16:48:10 和 16:57:40 之间的响应是错误还是成功,但它们很可能是来自代理的错误响应,因为 Node 没有世界上的一份关怀。

这是在 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. 服务器不接受请求。达到峰值后,您是否发现吞吐量有所下降?
  2. 您是否检查过服务器日志以查看是否记录了任何异常情况?
  3. 尝试绘制测试持续时间内响应时间和吞吐量的趋势。
  4. 您可能想查看代码中的任何 IO 绑定(bind)操作。
  5. 检查处理器队列长度。如果进程没有获得足够的 CPU,您应该会看到它不断增加。

关于javascript - 性能测试期间 NodeJS 空闲操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149536/

相关文章:

javascript - 使用 Javascript 将文本 CSS 解析为 JSON

javascript - ng-显示带有 ng-repeat 的 Angular 选项卡

node.js - MongoDB 性能 $ref 与嵌入式

node.js - httpS 和 http/2 有什么区别?

javascript - 重组 Sequelize 结果

internet-explorer - 为什么 IE11 在 Windows Media Player 中打开 MP4 文件而不是在浏览器中呈现?

javascript - Angular 参数不是函数,未定义

javascript - Webpack: npm start "Module not found: Error: Can' t resolve ..."移动 webpack/react 文件的位置后

css - 从 manifest.json 中的 content_scripts 中排除域对 CSS 文件不起作用?

css - 在 Google Chrome (-webkit) 中使用 css 设置滚动条样式