我在this question中看到如何设置Hapi Server来监控Node.js事件循环的延迟。
但我想在每次延迟超过阈值时记录,而不是返回503。
我怎么能这样做?
根据API reference,服务器实例中有一个'load'属性,包含我想要的信息,但我不知道如何监听事件(或者如果有这样的事件)检查负载时触发。
更新:
好的,根据to this,我发现“当服务器因高负载而拒绝请求时”会触发“日志”事件。 但我只是想记录,我不想拒绝任何请求,所以这并不能解决问题。
到目前为止,在请求被拒绝时记录的是:
server.on('log', (event) => {
if (event.tags && event.tags.indexOf('load') > -1) {
console.error(`Event loop lag detected! Latency: ${event.data.eventLoopDelay} ms`);
}
});
答案 0 :(得分:0)
我找到了一个现在使用node-toobusy的解决方案,但我很乐意知道是否可以只使用Hapi。
如果它对某人有帮助,我所做的就是禁用Hapi中的监控,并且只保留节点 - toobusy检查它:
import toobusy from 'node-toobusy'
toobusy.maxLag(1000);
toobusy.onLag(currentLag => {
logger.error(`Event loop lag detected! Latency: ${currentLag} ms`);
});
这样就不会阻止任何请求,我只需要记录,就像我想要的那样。