您好,匿名用户
随意问技术百科期待您的加入

Node.js应用CPU占用高,如何调试

0 投票

我写了一个Node.js应用(TCP网络服务,不是网站),CPU占用达到类似功能C语言程序的十多倍。

有什么工具可以看到CPU都消耗在什么地方呢?比如说,每个函数调用了多少次、花费多长时间,有多少setTimeout和setInterval等待运行。

用户头像 提问 2014年 6月7日 @ Trundle 上等兵 (301 威望)
分享到:

1个回答

0 投票
 
最佳答案

经过仔细检查,发现是程序内有死循环。调试的方法就是简单的插入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),导致程序死循环。

用户头像 回复 2014年 6月7日 @ Olaf 上等兵 (366 威望)
选中 2013年 9月7日 @Trundle
提一个问题:

相关问题

0 投票
1 回复 42 阅读
0 投票
1 回复 30 阅读
用户头像 提问 2013年 12月12日 @ Jayce 上等兵 (271 威望)
0 投票
1 回复 20 阅读
用户头像 提问 2013年 12月25日 @ Swain 上等兵 (232 威望)
0 投票
1 回复 5 阅读
用户头像 提问 2014年 5月26日 @ Nidalee 上等兵 (346 威望)
0 投票
1 回复 37 阅读
用户头像 提问 2012年 12月1日 @ Fiddlesticks 上等兵 (242 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...