2017-06-22 3 views
0

Ich sah in this question wie Hapi Server eingerichtet wird, um die Verzögerung in der Ereignisschleife von Node.js zu überwachen.Wie Log Server Belastung auf Hapi Server

Aber ich möchte jedes Mal einzuloggen die Verzögerung einen Schwellenwert überschreitet, statt Rückkehr 503.

Wie könnte ich es tun?

Nach der API reference, gibt es eine 'load' Eigenschaft in der Serverinstanz, die die Informationen enthält, die ich will, aber ich weiß nicht, wie das Ereignis (oder wenn ein solches Ereignis ist) ausgelöst wird, wenn der Belastung wird überprüft.

UPDATE:

Ok, fand ich heraus, es ist ein Ereignis ‚log‘, die „eine Anforderung, wenn der Server verwirft wegen der hohen Belastung“, nach to this ausgelöst wird.
Aber ich möchte nur protokollieren, ich möchte keine Anfragen zurückweisen, damit das Problem nicht gelöst wird.

Was ich bisher habe, die protokolliert, wenn Anfragen abgelehnt werden, ist dies:

server.on('log', (event) => { 
    if (event.tags && event.tags.indexOf('load') > -1) { 
    console.error(`Event loop lag detected! Latency: ${event.data.eventLoopDelay} ms`); 
    } 
}); 

Antwort

0

ich eine Lösung gefunden, die für jetzt arbeitet, mit node-toobusy, aber ich würde gerne wissen, ob es möglich ist, zu verwende dafür nur Hapi.

Im Fall hilft es jemand, was ich tat, die Überwachung in Hapi wurde deaktivieren und nur Knoten-toobusy es die Überprüfung zu halten:

import toobusy from 'node-toobusy' 

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

Auf diese Weise keine Anfragen blockiert, ich habe nur die Protokollierung, wie Ich wollte.

Verwandte Themen