我用Node.js + Express 3+ Jade制作了一个应用程序,它使用MySQL DB和节点-mysql模块。
该应用程序由PM2启动和监控。
当主页面加载时,我看到CPU的使用非常高,如下图所示。

起始页在MySQL DB上执行三次查询,但是如果我将Json对象而不是MySQL查询放在Json对象上,那么CPU的使用率似乎还是太高了。
有一种方法可以将CPU使用情况跟踪到端点函数中,以了解CPU使用率高的原因?
发布于 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/
我用内置的分析器运行了这个应用程序:
NODE_ENV=development node --prof app.js我提出了一些ApacheBench的要求
ab -k -c 20 -n 250 "http://localhost:8080/"我生成了一个processed.txt
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt在总结中,我认为:
[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模块相关:
/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。
发布于 2016-04-08 20:44:33
您可以使用操作系统模块记录机器的cpu使用情况。
var os = require('os');
console.log(os.cpus());https://stackoverflow.com/questions/36502849
复制相似问题