Fab*_*obs 17 event-loop blocking node.js npm
我想监视node.js中每次运行事件循环的时间.但是我不确定衡量这一点的最佳方法.我能想出的最佳方式如下:
var interval = 500;
var interval = setInterval(function() {
var last = Date.now();
setImmediate(function() {
var delta = Date.now() - last;
if (delta > blockDelta) {
report("node.eventloop_blocked", delta);
}
});
}, interval);
Run Code Online (Sandbox Code Playgroud)
我基本上通过查看a的延迟来推断事件循环运行时间setInterval
.我在阻塞节点模块中看到了相同的方法,但感觉不准确和沉重.有没有更好的方法来获取这些信息?
更新:更改了代码,以便setImmediate
像hapi.js一样使用.
"有没有更好的方法来获取这些信息?" 我没有比检查SetImmediate的时间延迟更好的方法来测试eventloop,但是你可以使用node的高分辨率计时器而不是Date.now()
var interval = 500;
var interval = setInterval(function() {
var last = process.hrtime(); // replace Date.now()
setImmediate(function() {
var delta = process.hrtime(last); // with process.hrtime()
if (delta > blockDelta) {
report("node.eventloop_blocked", delta);
}
});
}, interval);
Run Code Online (Sandbox Code Playgroud)
注意:delta将是一个元组数组[秒,纳秒].
有关process.hrtime()的更多详细信息:https: //nodejs.org/api/all.html#all_process_hrtime
"主要用于测量间隔之间的性能."
归档时间: |
|
查看次数: |
8488 次 |
最近记录: |