Tôi muốn theo dõi thời gian chạy mỗi vòng lặp sự kiện trong node.js. Tuy nhiên tôi không chắc chắn về cách tốt nhất để đo lường điều này. Cách tốt nhất mà tôi có thể đưa ra trông như sau:Làm thế nào để phát hiện và đo sự kiện chặn vòng lặp trong 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);
tôi về cơ bản suy ra thời gian chạy vòng lặp sự kiện bằng cách nhìn vào sự chậm trễ của một setInterval
. Tôi đã nhìn thấy cách tiếp cận tương tự trong mô-đun nút blocked nhưng nó cảm thấy không chính xác và nặng. Có cách nào tốt hơn để truy cập thông tin này không?
Cập nhật: Thay đổi mã để sử dụng setImmediate
như thực hiện bằng cách hapi.js.
[Nhân viên hapi.js cũng làm như vậy] (https://github.com/hapijs/good/blob/ecd705719777af5810dc224001940205cfebd2eb/lib/process.js#L14-L21) và họ đang theo dõi giá trị này liên tục, do đó, có vẻ như đây sẽ là đặt cược an toàn nhất của bạn. –
Cảm ơn con trỏ. Os sử dụng 'setImmediate' của họ thậm chí còn tốt hơn. –