2014-09-15 12 views
6

मैं कंसोल में देखना चाहता हूं कि HTTP अनुरोध के लिए कितना समय लगता है। Express.js की तरह है।Sails.js अनुरोध/प्रतिक्रिया समय को मापने के लिए

GET api/myurl/ 210ms 200

मैं sails debug चलाने, लेकिन इस बार प्रदर्शित नहीं होता।
मेरे पास नोड-इंस्पेक्टर चल रहा है लेकिन ऐसा लगता है कि यह मुझे रनटाइम पर जावास्क्रिप्ट ऑब्जेक्ट का निरीक्षण करने देता है लेकिन यह विशेष बात नहीं है।
क्या सेल में कोई कॉन्फ़िगरेशन सक्षम है या एनपीएम मॉड्यूल मैं अनुरोध और प्रतिक्रिया के बीच इस बार पता लगाने के लिए इंस्टॉल कर सकता हूं?

उत्तर

11

आप कुल प्रतिक्रिया समय (देखें पीढ़ी सहित और सॉकेट को सूचना भेजे) को मापने के लिए चाहते हैं तो आप req._startTime में startRequestTimer मिडलवेयर परिभाषित का उपयोग करें या response-time मिडलवेयर जो अधिक सटीक परिणाम देता है का उपयोग कर सकते हैं।

यह मिडलवेयर सभी HTTP प्रतिक्रियाओं के लिए एक्स-रिस्पॉन्स-टाइम शीर्षलेख जोड़ता है ताकि आप इसे क्लाइंट और सर्वर दोनों तरफ देख सकें।

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

क्या है कि मामले के लिए आदेश होना चाहिए, 'config/http.js' में मैं अन्य middlewares – diegoaguilar

+0

यदि संभव हो तो साथ एक आदेश सरणी है, प्रतिक्रिया समय लकड़हारा सूची के शीर्ष पर होना चाहिए। – abeja

+0

मैंने एक हुक बनाया है जो सभी चीजों को जोड़ता है। –

3

@abeja जवाब (बहुत अच्छा जवाब है, हालांकि) के अलावा, आप देख रहे हैं उत्पादन आवेदन की निगरानी के लिए, आप New Relic में रुचि हो सकती।

उपकरण आपको मापने के लिए मदद करता है (अन्य बातों के अलावा) प्रतिक्रिया समय, प्रवाह क्षमता, त्रुटि दरों आदि

New Relic Transactions

यह भी डेटाबेस प्रदर्शन (मेरे मामले में यह MongoDB है) और आप आसानी से मदद उपायों बाधाओं की जांच करें।

enter image description here

की है कि यह आप (कनेक्शन के समय सहित डोम प्रतिपादन समय आदि)

नई अवशेष सेटअप बहुत आसान है किसी ब्राउज़र से आवेदन प्रदर्शन को मापने के लिए अनुमति देता है शीर्ष पर - कुछ ही कदम के लिए आपके आंकड़े चल रहे हैं (यहां अधिक: Installing and maintaining Node.js)। विकास उद्देश्यों के लिए आप 24 घंटे डेटा प्रतिधारण के साथ नि: शुल्क खाता भी ले सकते हैं।

मुझे आशा है कि इससे भी मदद मिलेगी।

+0

नीचे दिए गए मेरे उत्तर की जांच के लिए धन्यवाद। मैं इसे सही जवाब नहीं दूंगा क्योंकि @abeja का जवाब वह था जिसे मैं ढूंढ रहा था। लेकिन यह नोडजेस प्रदर्शन की निगरानी के लिए एक बहुत ही महत्वपूर्ण जोड़ है। :) –

6

@ अबेजा का जवाब बहुत अच्छा है, लेकिन थोड़ी देर पुरानी है।

// 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); 
} 

एक छोटी सी स्पष्टीकरण:

  1. , res वस्तु की finish घटना को सुनें, क्योंकि जब reqend घटना फेंकना, res हैडर किसी के मामले में अभी भी इस सवाल का जवाब चाहते हैं, मैं नीचे नवीनतम संस्करण डाल अभी तक सेट नहीं है
  2. हाल के नोड.जेएस एपीआई getHeader से get में बदलते हैं।

btw, मेरी प्रतिष्ठा 0 है, इसलिए मैं @ एबेजा के जवाब :)

1

मैं एक पाल हुक कि पूरी प्रक्रिया को आसान बनाता है बना लिया है करने के लिए टिप्पणी पोस्ट नहीं कर सकते हैं। बस इसे npm install sails-hook-responsetime --save का उपयोग करके इंस्टॉल करें और यह HTTP और सॉकेट दोनों अनुरोधों के लिए एक्स-रेस्पॉन्स-टाइम जोड़ देगा।

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

संबंधित मुद्दे