2013-02-25 111 views
6

के भीतर i/o बाधा को कैसे ढूंढें हमें एक उच्च ट्रैफ़िक वेबसाइट मिली जो बहुत से I/O उत्पन्न करती है। 10 मिनट के भीतर यह 10 जीबी डेटा (कार्य प्रबंधक में देखे गए प्रश्न में w3wp) से अधिक पढ़ रहा है। स्मृति और एप्लिकेशन लटकने के लिए मैं सफलता के साथ WinDbg का उपयोग कर रहा हूं। लेकिन मुझे नहीं पता कि मैं एक प्रक्रिया के भीतर वस्तु (ओं)/विधि कैसे प्राप्त कर सकता हूं जो उच्चतम I/O के लिए ज़िम्मेदार है।asp.net ऐप

क्या यह भी संभव है?

संपादित सवाल यह है: वहाँ एक नेट विधानसभा में आई/ओ संचालन प्रोफ़ाइल का कोई तरीका है, का कहना है: सूत्र उच्चतम डिस्क आई/ओ (या कुछ इसी तरह के अनुसार क्रमबद्ध की सूची है कि मुझे मदद मिलेगी जहां के लिए देखो)

+0

क्या आपको पता है, जहां यह अपने कोड में हो रहा हो सकता है, या आप पूरी तरह से अंधा चल रहे हैं? –

+0

मुझे कोई जानकारी नहीं है, हालांकि सभी कोड कई बार चला गया (यह काफी बड़ी साइट है, बहुत सारी कार्यक्षमता है)। चित्र अपलोड करना और पोस्ट करना संभव है लेकिन यह प्रति माह लगभग 10 जीबी डेटा है। –

+0

क्या आप उन छवियों को एप्लिकेशन के भीतर मौके से संसाधित कर रहे हैं? –

उत्तर

6

ANTS Performance Profiler

मैं बड़ी सफलता के लिए इस उपकरण का इस्तेमाल किया है - जो उत्पन्न कर रहे हैं ~ एक उच्च मात्रा वेब खेत पर स्मृति के 512GB 5-10 मिनट के भीतर चबाया हो रही विशेष निर्देश खोजने के साथ काम । तुम्हारी तरह एक बहुत ही समान स्थिति की तरह लगता है।

अब, यथार्थवादी होना - यह नहीं जादुई अपनी समस्या को हल करने के लिए जा रहा है। इसके लिए अभी भी बहुत सारे सेटअप, पूर्ण विश्लेषण और जासूसी कार्य की आवश्यकता है। लेकिन इस उपकरण ने निश्चित रूप से समस्या को "व्यावहारिक रूप से असफल" से "दिनों के भीतर सुलभ" करने में लिया।

अद्यतन:

मैं टिप्पणी में उल्लेख किया है (और बेन एम्मेट गूँजती), हम स्मृति नजर रखने के लिए चींटियों उपयोग कर सकते हैं, फाइल सिस्टम संभालती है - काफी किसी भी संसाधनों की खपत और देखने के लिए कॉल स्टैक अंदर घुसते हैं विशिष्ट दिनचर्या के प्रभाव।

+0

क्या आप चींटियों के साथ ऐसा करने के तरीके पर थोड़ा सा विस्तार कर सकते हैं? क्या आप मेमोरी प्रोफाइलर का उपयोग कर रहे हैं? मुझे विंडबग की तुलना में थोड़ा सीमित लगता है। –

+0

@ बाहरी सबसे संदिग्ध दिनचर्या से शुरू होने वाला एल्गर, हम देख सकते हैं कि उस दिनचर्या के दौरान कितनी मेमोरी, एफएस हैंडल इत्यादि जमा होती है - और संसाधन संचय को अपेक्षाकृत सपाट रहने के दौरान गहरी दिनचर्या में ड्रिल करना शुरू होता है - जिसका अर्थ है कि हम शून्य में हैं समस्या पर –

+0

लेकिन स्मृति खपत वास्तव में इतना चिंताजनक नहीं है (व्यस्त समय पर अधिकतम 400 एमबी, लगभग 64 बिट ऐप के लिए लगभग 275 एमबी)। आपकी स्थिति में 512 जीबी मेमोरी का क्या मतलब है? –

1

मैं इस उपकरण AppDynamics Lite जो आपके आवेदन विजुअल तरीके लागत और प्रदर्शन कॉल प्रदर्शित करता है के साथ आया था। इससे आपको यह पता लगाने में मदद मिल सकती है कि कौन से फ़ंक्शन सबसे महंगा आईओ ऑपरेशंस बना रहे हैं।

उद्धरण;

प्रतिक्रिया समय, प्रवाह क्षमता, अपवाद दर, और कचरा संग्रहण बार की तरह मुख्य मैट्रिक्स के साथ-साथ सीपीयू, मेमोरी और डिस्क मैं/हे जैसे प्रमुख सिस्टम संसाधन के साथ अपने CLR के स्वास्थ्य को समझें।

एक शॉट देने के लायक है क्योंकि यह 30 दिनों के लिए परीक्षण/नि: शुल्क है। आशा करता हूँ की ये काम करेगा। Ps: मैं किसी भी तरह से ऐपडाइनेमिक्स से संबद्ध नहीं हूं।

1

आप Windows 8 जो Windows Vista और बाद में भी चलता है से (मुक्त) Windows Performance Toolki टी का उपयोग कर सकते हैं। वहां आप सभी प्रक्रियाओं में एक बार में क्या चल रहा था यह देखने के लिए सिस्टम विस्तृत प्रोफाइलिंग चालू कर सकते हैं। कोई उपकरण आवश्यक नहीं है। WPRUI.exe द्वारा स्वचालित रूप से किए गए आर्केन रजिस्ट्री कुंजी को सेट करने के लिए केवल एक रीबूट की आवश्यकता होती है।

XPerf के साथ आप इतना है कि एक कॉल स्टैक हर आईओ जो शुरू कर दिया है के लिए लिया जाता है आईओ Init ढेर चलने सक्षम हो सकता है। एकमात्र मुद्दा यह है कि ढेर 64 बिट प्रक्रियाओं के लिए टूटा जाएगा जिसका अर्थ है कि आप अपने कोड के बीसीएल विधियों के ऊपर केवल पहली विधि देखेंगे क्योंकि ओएस की स्टैकवॉकिंग क्षमताओं में विंडोज 7 बग है।

आपकी असेंबली एनजेन के लिए एक वर्कअराउंड है या सर्वर 2012 पर जाएं या गहरी कॉल स्टैक देखने के लिए प्रोफाइलिंग के लिए x86 पर स्विच करें।

आप सभी फ़ाइल आईओ और सीपीयू गतिविधि को बिना किसी कॉल स्टैक और फ़ाइल नामों के हार्ड डिस्क का उपयोग करने के साथ भी देखेंगे। इससे आपको अच्छी जानकारी मिलनी चाहिए कि आपके ऐप का कौन सा हिस्सा डिस्क आईओ का कारण बन रहा है। आंशिक कॉल स्टैक से आप पूरी तरह से बिना ढेर के अपने मुद्दे को इंगित करने में सक्षम होना चाहिए।

उपकरण आपको उस खर्च पर किसी व्यावसायिक रूप से उपलब्ध प्रोफाइलर की तुलना में अधिक अंतर्दृष्टि प्रदान करेगा जो आपको इसका उपयोग करने के तरीके सीखने की आवश्यकता है। चूंकि कॉल स्टैक आपके कोड या उपयोगकर्ता मोड में समाप्त नहीं होते हैं, लेकिन कर्नेल में आप यह भी निर्धारित कर सकते हैं कि उदा। वायरस स्कैनर महत्वपूर्ण आईओ देरी कर रहा है। लेकिन आपको यह जानने की जरूरत है कि आपका प्रोसेसर कैसे काम करता है। यह टूलसेट मूल रूप से कर्नेल देवों के लिए लक्षित था जो बताते हैं कि आप इतने बेकार कॉलम क्यों देखते हैं।

नीचे दी गई तस्वीर में आप फ़ाइल आईओ और सीपीयू खपत को ढेर देखते हैं। जब आप डिस्क आईओ ग्राफ में अपनी उच्च आईओ फ़ाइल का चयन करते हैं तो यह सीपीयू खपत में सभी संबंधित कॉल स्टैक्स को हाइलाइट करेगा, जबकि आईओ सक्रिय होने पर एक ही समय में लिया गया था। इस तरह आप आईओ से अपने संभावित अवरुद्ध धागे पर सीधे नेविगेट कर सकते हैं।

enter image description here

+0

वाह, बहुत बहुत धन्यवाद अंतर्दृष्टि मुझे यह अस्तित्व में नहीं पता था। मैं इसे आजमाऊंगा। –