2014-09-15 7 views
6

Ich möchte in der Konsole die Zeit sehen, die es dauert, bis eine HTTP-Anfrage beantwortet wird. So ähnlich wie express.js.So messen Sie Sails.js Anfragen/Antwortzeit

GET api/myurl/ 210ms 200

Ich betreibe sails debug aber nicht viel zeigen.
Ich habe node-inspector ausgeführt, aber es scheint so, als ob ich die JavaScript-Objekte zur Laufzeit untersuchen kann, aber nicht diese spezielle Sache.
Gibt es eine Konfiguration in Sails, die ich aktivieren kann oder ein NPM-Modul, das ich installieren kann, um diese Zeit zwischen Anfrage und Antwort herauszufinden?

Antwort

11

Wenn Sie Gesamtreaktionszeit messen möchten (einschließlich Ansicht Generation und Daten an die Buchse schieben) können Sie req._startTime in startRequestTimer Middleware definiert verwenden oder response-time Middleware verwenden, die viel genauere Ergebnisse liefert.

Diese Middleware fügt allen HTTP-Antworten einen X-Response-Time-Header hinzu, sodass Sie sie sowohl auf der Client- als auch auf der Serverseite überprüfen können.

module.exports.http = { 
    middleware: { 
    order: [ 
     'responseTimeLogger', 
     // ... 
    ], 

    // Using built-in variable defined by Sails 
    responseTimeLogger: function (req, res, next) { 
     req.on("end", function() { 
     sails.log.info('response time: ' + new Date() - req._startTime + 'ms'); 
     }); 
     next(); 
    }, 

    // Using response-time middleware 
    responseTimeLogger: function (req, res, next) { 
     req.on("end", function() { 
     sails.log.info('response time: ' + res.getHeader('X-Response-Time')); 
     }); 
     require('response-time')()(req, res, next); 
    } 
    } 
} 
+1

Was die Reihenfolge für diesen Fall sein sollte, in 'config/http.js' ich einen Auftrag Array mit anderer Middle – diegoaguilar

+0

Wenn möglich bekam, sollte Ansprechzeit Logger an der Spitze der Liste sein. – abeja

+0

Ich habe einen Hook erstellt, der alle benötigten Dinge hinzufügt. Überprüfen Sie meine Antwort unter –

3

Neben @abeja Antwort (sehr nette Antwort though), wenn Sie für die Produktion Anwendungsüberwachung suchen, könnten Sie in New Relic interessiert.

Das Tool hilft Ihnen (unter anderem) Reaktionszeit zu messen, Durchsatz, Fehlerraten usw.

New Relic Transactions

Es ist auch die Datenbank-Performance misst (in meinem Fall ist es MongoDB) und helfen Sie sich einfach untersuchen Engpässe.

enter image description here

Hinzu kommt, dass es Ihnen erlaubt, die Anwendungsleistung von einem Browser (einschließlich Verbindungszeit, DOM Rendering-Zeit etc.)

New Relic Setup ist sehr einfach zu messen - ein paar Schritte müssen Ihre Statistiken laufen (mehr hier: Installing and maintaining Node.js). Für Entwicklungszwecke können Sie auch ein kostenloses Konto mit 24-Stunden-Datenspeicherung haben.

Ich hoffe, dass auch das helfen wird.

+0

Danke für die Zugabe. Ich werde es nicht zur richtigen Antwort machen, da die Antwort von @abeja diejenige war, nach der ich suchte. Aber es ist eine sehr wichtige Ergänzung zur Überwachung der Leistung von nodejs. :) –

6

@ Abeja die Antwort ist großartig, aber ein wenig veraltet.Im Falle von noch jemand die Antwort suchen, habe ich die neueste Version unter:

// Using response-time middleware 
responseTimeLogger: function(req, res, next) { 
    res.on("finish", function() { 
    sails.log.info("Requested :: ", req.method, req.url, res.get('X-Response-Time')); 
    }); 
    require('response-time')()(req, res, next); 
} 

Eine kleine Erklärung:

  1. hören finish Falle res Objekt, denn wenn req emittieren end Ereignis, res Kopf ist noch nicht festgelegt.
  2. Letzte Node.js ändern die API getHeader zu get.

btw, ist mein Ruf 0, so kann ich nicht schreiben Kommentar auf die Antwort der @ abeja :)

1

ich ein Segel Haken erstellt haben, die den gesamten Prozess erleichtert. Installieren Sie es einfach mit npm install sails-hook-responsetime --save und es wird X-Response-Time sowohl HTTP- als auch Socket-Anfragen hinzufügen.

https://www.npmjs.com/package/sails-hook-responsetime