如何在Hapi Server上记录服务器负载

时间:2017-06-22 18:00:51

标签: node.js hapijs

我在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`);
  }
});

1 个答案:

答案 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`);
});

这样就不会阻止任何请求,我只需要记录,就像我想要的那样。

相关问题