Node.js 如何在Hapi服务器上记录服务器负载
我了解了如何设置Hapi服务器来监视Node.js事件循环中的延迟 但我希望在每次延迟超过阈值时都记录日志,而不是返回503 我怎么做呢 根据,服务器实例中有一个“load”属性,其中包含我想要的信息,但我不知道如何侦听在检查加载时触发的事件(或者是否存在此类事件) 更新: 好的,我发现有一个“日志”事件,“当服务器因高负载拒绝请求时”会触发。Node.js 如何在Hapi服务器上记录服务器负载,node.js,hapijs,Node.js,Hapijs,我了解了如何设置Hapi服务器来监视Node.js事件循环中的延迟 但我希望在每次延迟超过阈值时都记录日志,而不是返回503 我怎么做呢 根据,服务器实例中有一个“load”属性,其中包含我想要的信息,但我不知道如何侦听在检查加载时触发的事件(或者是否存在此类事件) 更新: 好的,我发现有一个“日志”事件,“当服务器因高负载拒绝请求时”会触发。 但是我只想登录,我不想拒绝任何请求,所以这并不能解决问题 到目前为止,当请求被拒绝时,我会记录以下内容: server.on('log', (event
但是我只想登录,我不想拒绝任何请求,所以这并不能解决问题 到目前为止,当请求被拒绝时,我会记录以下内容:
server.on('log', (event) => {
if (event.tags && event.tags.indexOf('load') > -1) {
console.error(`Event loop lag detected! Latency: ${event.data.eventLoopDelay} ms`);
}
});
我找到了一个目前有效的解决方案,使用,但我很高兴知道是否可以只使用Hapi 如果它对某人有帮助,我所做的是禁用Hapi中的监视,并让只有节点Too忙于检查它:
import toobusy from 'node-toobusy'
toobusy.maxLag(1000);
toobusy.onLag(currentLag => {
logger.error(`Event loop lag detected! Latency: ${currentLag} ms`);
});
这样,就不会阻止任何请求,我只需要记录日志,正如我所希望的那样。我找到了一个现在可以使用的解决方案,但我很高兴知道是否可以仅使用Hapi来实现此目的 如果它对某人有帮助,我所做的是禁用Hapi中的监视,并让只有节点Too忙于检查它:
import toobusy from 'node-toobusy'
toobusy.maxLag(1000);
toobusy.onLag(currentLag => {
logger.error(`Event loop lag detected! Latency: ${currentLag} ms`);
});
这样就不会阻止任何请求,我只需要记录日志,正如我所希望的那样