2013-07-16 14 views
6

Ho sviluppato alcune API di riposo basate su nodejs, voglio testare le prestazioni delle API. Qualche strumento può facilmente contare il tempo di ogni chiamata API?API REST che misurano i tempi di risposta lato server (prestazioni).

Oppure come implementare la misurazione del tempo richiesto per l'API REST per rispondere alle richieste.

+0

Siete alla ricerca di uno strumento di copertura di codice? Questo dovrebbe darti la maggior parte di quello che vuoi. Non ne conosco uno in cima alla mia testa però. – tjameson

+2

perché non scrivi il tuo strumento? è piuttosto semplice. – Rikky

+0

Ho creato un servizio web basato su nodejs, esposto alcune API di riposo, alcuni client stanno consumando queste API. Voglio ricordare l'ora di ogni chiamata API, esiste uno strumento del genere? – ldlchina

risposta

3

Ecco un esempio di come effettuare l'iniezione di eventi con misurazione del tempo precisa utilizzando express.js.

Aggiungi questo prima i percorsi:

app.all('*', function(req, res, next) { 
    var start = process.hrtime(); 

    // event triggers when express is done sending response 
    res.on('finish', function() { 
    var hrtime = process.hrtime(start); 
    var elapsed = parseFloat(hrtime[0] + (hrtime[1]/1000000).toFixed(3), 10); 
    console.log(elapsed + 'ms'); 
    }); 

    next(); 
}); 

Ciò consentirà di risparmiare tempo di ogni richiesta di avvio, e si innescherà finish dopo la risposta viene inviata al cliente.
Grazie per user419127 che punta all'evento 'finish'

+0

Devo chiamare req.timer.complete() in ogni API? Questo influenza la perfusione? Non voglio fare troppi cambiamenti nel mio codice o influenzare le prestazioni. – ldlchina

+0

È possibile sovrascrivere il metodo di invio per chiamarlo per te, oppure puoi chiamarlo manualmente da solo dopo ogni invio. Stai decisamente sopraffacendo un singolo richiamo di funzione - poiché le prestazioni arrivano davvero in situazioni complesse, non così piccole come misurare il tempo delle richieste. – moka

+0

Ho modificato la risposta sopra, che ora ha l'iniezione in 'res.send' che non ha richiede qualsiasi modifica API. – moka

0

Che dire di uno strumento di misurazione delle prestazioni come Apache JMeter. È possibile utilizzarlo facilmente per simulare un carico (pesante) sul server e quindi misurare i tempi di risposta e altri indicatori di prestazioni. Fornisce più rappresentazioni grafiche per questo.

Questo Blog Post mostra come è possibile impostare un test delle prestazioni basato su HTTP per le API Web. Lo faccio in questo modo per testare i miei webservices RESTful.

0

Per semplificare l'utilizzo delle funzioni console.time('timerName');console.timeEnd('timerName') nel nodo. 'timerName' è ovviamente configurabile.

Esempio:

console.time('getCustomers'); console.timeEnd('getCustomers')

uscita:

getCustomers: 58ms

Problemi correlati