2009-06-02 7 views
6

मुझे लगता है कि विंडोज सर्वर 2003 मानक 64 पर चल रहा है एक .net 2.0 वेब अनुप्रयोग है पर, के लिए आईआईएस 6.मैं एक आईआईएस क्रैश का कारण कैसे निर्धारित कर सकते हैं एक 64-बिट सर्वर

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

ईवेंट लॉग जब भी एक दुर्घटना डेटा ब्लॉक में कोई अतिरिक्त जानकारी के साथ होता है निम्न दिखाता है:,

दोषयुक्त अनुप्रयोग w3wp.exe संस्करण 6.0.3790.3959, स्टांप 45d691cc, मॉड्यूल kernel32.dll दोषयुक्त, संस्करण 5.2.3790.4062, टिकट 462643a7, डीबग? 0, गलती पता 0x0000000000027d8d।

यह इसके बारे में एक 64 बिट संस्करण है, क्योंकि भले ही तो मैं मानक डीबग निदान के औजार के किसी भी उपयोग नहीं कर सकते एक x64 सर्वर पर चल रहा है, यह केवल 32 बिट मोड में चल रहा आईआईएस जोड़ा जाता है।

मैंने विंडोज़ (x64) के लिए डिबगिंग टूल का उपयोग करने का प्रयास किया है और w3wp प्रक्रिया से अटैच करने में सक्षम था, और एक और क्रैश के लिए इंतजार कर रहा था। हालांकि, इसने सर्वर को इतना धीमा कर दिया कि यह अनुपयोगी था, इसलिए मुझे इसे रोकना पड़ा।

आईआईएस दुर्घटना के कारण को निर्धारित करने के लिए मैं अन्य विधियों का उपयोग कैसे कर सकता हूं?

उत्तर

4

ASP.NET 2.0 Crash case study: Unhandled exceptions के बारे में पढ़ें।

रणनीति # 1 - प्रवेश करने अपवाद
पहला तरीका है, और यह है जिस तरह से मैं शायद सिफारिश करेंगे, घटना में अपनी ढेर का पता लगाने के साथ-साथ अपवाद लॉग इन करने के एक UnhandledExceptionHandler बनाने के लिए है लॉग इन करने के रूप में में इस लेख http://support.microsoft.com/?id=911816 आप web.config को इस तरह हैंडलर जोड़ने दिखाया गया है:

<system.web> 
    <httpModules> 
    <add type="WebMonitor.UnhandledExceptionModule, <strong name>" 
     name="UnhandledExceptionModule"/> 
    </httpModules> 
     … 
</system.web> 

और यह वर्तमान ऐप डोमेन की अनचाहे अपवाद घटना तक एक ईवेंटहैंडर को हुक करता है। आप को वास्तव में मजबूत नाम की आवश्यकता नहीं है और इसे जीएसी में जोड़ें, हालांकि यदि आप को कई अनुप्रयोगों में प्लान करते हैं तो आपको को कई बार लोड होने से बचने के लिए करना चाहिए। अब अगली बार जब आप इन बिना क्रिया अपवादों में से एक मिलता है, प्रक्रिया अभी भी बाहर निकलें (जब तक आप बिना क्रिया अपवाद नीति में बदलाव), लेकिन आप एक बहुत समस्या दूर की अच्छी संभावना है।

+0

अच्छा खोज, मैं अभी यह कोशिश कर रहा हूं। – AaronS

+0

@AaronS, यह आपके लिए कैसे काम करता है? – jinsungy

+0

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

3

आप सीपीयू, मेमोरी और .NET विशिष्ट काउंटर जैसी चीजों की निगरानी के लिए प्रदर्शन काउंटर सेट अप कर सकते हैं।वहाँ जानकारी का एक बहुत हैं, लेकिन इस TechNet लेख मदद कर सकता है:

ASP.NET ही निगरानी आवेदन के स्वास्थ्य के लिए एक पूरे के नाम स्थान है। आप अपनी खुद की घटनाएं बना सकते हैं या, आमतौर पर, डिफ़ॉल्ट अनुप्रयोगों के लिए अपने एप्लिकेशन को कॉन्फ़िगर कर सकते हैं। इस MSDN लेख अधिक है:

समस्या (जैसे कि एक बिना क्रिया का अपवाद के रूप में आवेदन कोड है अगर मैं Windows ईवेंट में अधिक विवरण देखने के उम्मीद थी कि अगर यह आपकी समस्या थे, हालांकि लॉग), आप उन पर जाल और रिपोर्ट करने के लिए टूल का उपयोग कर सकते हैं। ELMAH एक शानदार टूल है जिसे मैंने अतीत में उपयोग किया है। इसे Tivo for web applications के रूप में वर्णित किया गया है और अपवादों के विवरण देने के लिए कई तरीके हैं और क्या गलत है इसका पता लगाने में सहायता करें।

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