首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js高CPU使用率,如何调试它?

问Node.js高CPU使用率,如何调试它?
EN

Stack Overflow用户
提问于 2016-04-08 14:56:33
回答 2查看 6.5K关注 0票数 2

我用Node.js + Express 3+ Jade制作了一个应用程序,它使用MySQL DB和节点-mysql模块。

该应用程序由PM2启动和监控。

当主页面加载时,我看到CPU的使用非常高,如下图所示。

​

​

起始页在MySQL DB上执行三次查询,但是如果我将Json对象而不是MySQL查询放在Json对象上,那么CPU的使用率似乎还是太高了。

有一种方法可以将CPU使用情况跟踪到端点函数中,以了解CPU使用率高的原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-27 10:15:30

--我解决了我的CPU问题,谢谢剖析.

我尝试在端点函数的更多部分记录CPU的使用情况,但是这种方法没有帮助。对于每个需要使用CPU的人来说,这个脚本非常好:http://gist.github.com/bag-man/5570809

为了排除该问题与MySQL查询有关,我创建了一个只执行查询的简单应用程序,并使用ApacheBench对其进行了测试。这个测试成功通过了。

之后,我找到了解决方案.

对Node.js的分析--在这里解释:https://nodejs.org/en/docs/guides/simple-profiling/

我用内置的分析器运行了这个应用程序:

代码语言:javascript
复制
NODE_ENV=development node --prof app.js

我提出了一些ApacheBench的要求

代码语言:javascript
复制
ab -k -c 20 -n 250 "http://localhost:8080/"

我生成了一个processed.txt

代码语言:javascript
复制
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt

在总结中,我认为:

代码语言:javascript
复制
 [Summary]:
   ticks  total  nonlib   name
    4036   22.6%   23.3%  JavaScript
   13130   73.6%   75.9%  C++
    1334    7.5%    7.7%  GC
     527    3.0%          Shared libraries
     144    0.8%          Unaccounted

“自下而上(重型)配置文件”都与uglify-js模块相关:

代码语言:javascript
复制
/node_modules/with/node_modules/uglify-js/lib/parse.js

因此,从我看到的依赖项来看,这个模块是Jade使用的。

我的应用程序执行了很多查询,并生成一个大型Json对象,并将其传递给Jade模板引擎。

Jade使用了大量的CPU来解析传递的大型对象。

首先,我从0.35.0到1.3.1对该模块进行了更新(因为pug仍然在alpha中)。

Jade使用了大量的CPU来解析传递的大型对象。

首先,我从0.35.0到1.3.1对该模块进行了更新(因为pug仍然在alpha中)。

由于这一更新,性能提高了。

但最后,我计划在没有大量查询的情况下加载页面,并通过REST服务获取所需的信息,而不将数据传递给Jade。

票数 4
EN

Stack Overflow用户

发布于 2016-04-08 20:44:33

您可以使用操作系统模块记录机器的cpu使用情况。

代码语言:javascript
复制
var os = require('os');
console.log(os.cpus());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36502849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档