2017-06-22 88 views
0

我在this question中看到如何设置Hapi服务器来监视Node.js的事件循环中的延迟。如何在Hapi服务器上记录服务器负载

但我想记录每延迟超过阈值的时间,而不是返回503

我怎么能这样做呢?

根据API reference,服务器实例中有一个'load'属性,其中包含我想要的信息,但我不知道如何监听事件(或者是否有此类事件)负载被检查。

UPDATE

好的,我发现存在被触发“当服务器由于高负载拒绝的请求”,按照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

我发现,现在,作品使用node-toobusy一个解决方案,但我会很高兴地知道,如果有可能为此只使用Hapi。

在情况下,它可以帮助别人,我所做的就是禁止在哈皮监控,并只保留节点忙的没有检查它:

import toobusy from 'node-toobusy' 

toobusy.maxLag(1000); 
toobusy.onLag(currentLag => { 
    logger.error(`Event loop lag detected! Latency: ${currentLag} ms`); 
}); 

这样没有请求被阻塞,我刚才的记录,如我想了。