2013-04-16 14 views
7

मैं हाल ही में एक वेबएपीआई बैकएंड साथ MVC 4 के लिए हमारी मौजूदा ASP.NET MVC 2 आवेदन बदल दिया। दुर्भाग्यवश, हालांकि, मैं वेबएपीआई के संबंध में कुछ गंभीर प्रदर्शन मुद्दों को देख रहा हूं।गरीब वेबएपीआई प्रदर्शन

मैं MiniProfiler सेटअप और अगर मैं टोंटी की पहचान कर सकता है देखने के लिए कुछ कदम जोड़ा, और मेरे आश्चर्य करने के लिए, यह नहीं डेटाबेस है। रूपांतरण से पहले, इस तरह का अनुरोध ~ 50ms से अधिक नहीं लेगा, इसलिए इन सरल अनुरोधों को 2 सेकंड के ऊपर लेना थोड़ा चौंकाने वाला है।

enter image description here

अजीब हिस्सा विलंबता के बहुमत होता है कि इससे पहले कि अनुरोध भी यह बनाता है एसक्यूएल करने के लिए खुद को कहता है कि यह सब है।

मैं अगर वहाँ और अधिक गहराई से वेबएपीआई के इस कॉल में MiniProfiler टाई आगे निरीक्षण करने के लिए क्या वास्तव में यहाँ पर जा रहा है एक ज्ञात तरीका था सोच रहा था। किसी भी सहायता की काफी सराहना की जाएगी।

[HttpGet] 
public bool AssetExistsById(string assetId) { 
    using (Current.Profiler.Step("WebAPI Call To Model")) { 
     return Asset.AssetExists(assetId); 
    } 
} 

एसेट मॉडल::

public static bool AssetExists(string assetId) { 
    using (Current.Profiler.Step("WCF call to DataAccess lib")) { 
     return WcfEndPoint.AssetExists(assetId); 
    } 
} 

धन्यवाद

Fwiw, यहाँ कोड इस अनुरोध

वेबएपीआई नियंत्रक के लिए इस्तेमाल किया जा रहा है!

तो मुझे पता चला कि यहाँ क्या चल रहा था अद्यतन ... ऐसा लगता है मैं प्रणाली निदान ट्रेसिंग मेरी App_Start/WebApiConfig.cs फ़ाइल में सक्षम था। मैंने यादृच्छिक रूप से निम्नलिखित पंक्ति पर टिप्पणी की, और सब कुछ तय किया गया था।

config.EnableSystemDiagnosticsTracing(); 

मुझे आशा है कि इससे दूसरों की मदद मिलती है!

+2

आप एक वी.एस. प्रोफ़ाइल लेने पता लगाना है कि इतना समय ले रहा है की कोशिश की है? –

+0

क्या आपके पास लोड समय का परीक्षण करने के लिए वेब एप्लिकेशन के अंदर कोई स्थिर पृष्ठ/छवियां हैं? यह नेटवर्क/सर्वर से संबंधित हो सकता है। –

+0

@YoussefMoussaoui प्रतिक्रिया के लिए धन्यवाद! मैं वास्तव में प्रोफाइलर को बढ़ाता हूं लेकिन मुझे विशेष रूप से दिलचस्प कुछ नहीं मिला क्योंकि मेरे अनुरोध इतने लंबे समय से क्यों ले रहे थे ... सबसे लंबा हिस्सा अनुरोध को रूट कर रहा था, लेकिन यह अपेक्षाकृत छोटा था। शायद मैं गलत प्रोफाइलर का उपयोग कर रहा हूँ? अगर मैं मदद करता हूं तो मैं वीएस2012 का उपयोग कर रहा हूं। –

उत्तर

7

तो मुझे पता चला कि यहाँ क्या चल रहा था ... ऐसा लगता है कि मैं सिस्टम निदान ट्रेसिंग मेरी App_Start/WebApiConfig.cs फ़ाइल में सक्षम था। मैंने यादृच्छिक रूप से निम्नलिखित पंक्ति पर टिप्पणी की, और सब कुछ तय किया गया था।

config.EnableSystemDiagnosticsTracing(); 

मुझे आशा है कि इससे दूसरों की मदद मिलती है!

+0

मेरी इच्छा है कि मैंने इसे 4 घंटे पहले देखा था! मुझे यह सही समस्या थी, और समाधान को वैसे ही मिला। :) दिलचस्प बात यह है कि, हमने Azure पर तैनाती करते समय केवल प्रदर्शन हिट देखा। स्थानीय रूप से चलते समय, एप्लिकेशन ठीक लग रहा था। –

+0

हाँ मैं वास्तव में कुछ हफ्ते पहले फिर से विभिन्न डायग्नोस्टिक धावकों के साथ गड़बड़ कर चुका था और इस बार किसी भी विलंबता के मुद्दों पर ध्यान नहीं दिया। दिलचस्प है कि आपने Azure पर तैनाती के बाद केवल मुद्दों को देखा! रिलीज बनाम डीबग चलाने के दौरान संभावित रूप से डायग्नोस्टिक्स ट्रेसिंग का उपयोग करने के साथ एक मुद्दा? –

+0

मैंने जो Azure इंस्टेंस का उल्लेख किया है वह निरंतर तैनाती और एकीकरण परीक्षण के लिए एक गंतव्य है। यह निर्माण का एक डीबग संस्करण चला रहा है। –

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