2017-06-22 145 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`); 
}); 

這樣沒有請求被阻塞,我剛纔的記錄,如我想了。