Heim > Fragen und Antworten > Hauptteil
我写了一个Node.js应用(TCP网络服务,不是网站),CPU占用达到类似功能C语言程序的十多倍。
有什么工具可以看到CPU都消耗在什么地方呢?比如说,每个函数调用了多少次、花费多长时间,有多少setTimeout和setInterval等待运行。
大家讲道理2017-04-17 11:03:18
经过仔细检查,发现是程序内有死循环。调试的方法就是简单的插入console.log
。
// private method entry_expiry
Cache.prototype.entry_expiry = function Cache_entry_expiry(key) {
var now = Date.now();
var entry = this.T[key];
if (now >= entry._expiry) {
delete this.T[key];
} else {
setTimeout(this.entry_expiry.bind(this, key), entry._expiry - now);
}
};
其中的var now = Date.now();
之前不慎写成var now = Date.now;
。Date.now
转换成数字是NaN
,造成now >= entry._expiry
永远是false
。
而setTimeout(fn,NaN)
等同于setTimeout(fn,0)
,导致程序死循环。
PHP中文网2017-04-17 11:03:18
pm2 可以满足到文件.. https://github.com/Unitech/pm2
至于要到函数的话,就要用的V8Profiler 了,不过这个有点难用...
http://code.google.com/p/v8/wiki/V8Profiler
参考一下这个吧... https://github.com/cnodejs/nodeclub/wiki/入门知识概览