Node.js应用CPU占用高,如何调试
我写了一个Node.js应用(TCP网络服务,不是网站),CPU占用达到类似功能C语言程序的十多倍。
有什么工具可以看到CPU都消耗在什么地方呢?比如说,每个函数调用了多少次、花费多长时间,有多少setTimeout和setInterval等待运行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
经过仔细检查,发现是程序内有死循环。调试的方法就是简单的插入
console.log
。其中的
var now = Date.now();
之前不慎写成var now = Date.now;
。Date.now
转换成数字是NaN
,造成now >= entry._expiry
永远是false
。而
setTimeout(fn,NaN)
等同于setTimeout(fn,0)
,导致程序死循环。用
console.log()
太暴力了,而且效率很低,需要用cpu profile去定位奥参考Node.js 性能优化的基本方法与实战, 里面有完整的方法论与实战, 对你有用的话点个赞奥
pm2 可以满足到文件..
https://github.com/Unitech/pm2
至于要到函数的话,就要用的V8Profiler 了,不过这个有点难用...
http://code.google.com/p/v8/wiki/V8Profiler
参考一下这个吧...
https://github.com/cnodejs/nodeclub/wiki/入门知识概览