2009-02-11 12 views
5

विभिन्न आम कारणों से मैं अपने एएसपी.NET एप्लिकेशन के लिए ट्रेसिंग का उपयोग करना चाहता था। खासकर जब से मुझे Service Trace Viewer उपकरण का उपयोग करने की संभावना के बारे में पता चला है जो आपको अपने निशान को एक शक्तिशाली तरीके से जांचने की अनुमति देता है।एएसपी.नेट और सिस्टम। डायग्नोस्टिक्स ट्रेसिंग - क्या मुझे कुछ याद आया है, या यह एक बुरा विचार है?

चूंकि मैंने पहले कभी इस ट्रेस चीज़ का उपयोग नहीं किया था, इसलिए मैंने इसे शुरू करना शुरू कर दिया था। Google, SO और MSDN के कुछ समय बाद मुझे अंत में एक अच्छा विचार है कि चीजें कैसे काम करती हैं। लेकिन मुझे एक बहुत परेशान चीज भी मिली।

एएसपी.NET अनुप्रयोगों में ट्रेस का उपयोग करते समय यह वेब अनुरोधों से ट्रेस संदेशों को समूहबद्ध करने के लिए बहुत समझदारी बनाता है। खासकर जब से मैं इसका उपयोग करना चाहता हूं, प्रदर्शन समस्याओं का अध्ययन करने के लिए है। उपर्युक्त टूल जेनरेट की गई XML फ़ाइलों में <Corrleation> टैग का उपयोग करके इसका भी समर्थन करता है। जो बदले में से आता है। यह अन्य अच्छी सुविधाओं जैसे कि गतिविधि शुरू/रोकना भी अनुमति देता है, जो ट्रेस संदेशों का एक बेहतर समूह प्रदान करता है। बिल्कुल सटीक?

हालांकि मैं तब तक, जब तक मैंने CorrelationManager वास्तव में रहते थे, का निरीक्षण करना शुरू किया। आखिरकार - यह एक स्थिर संपत्ति थी। कुछ प्रतिबिंबक के साथ खेलने के बाद मुझे कुछ भयावह पता चला - यह CallContext में संग्रहीत है! we shouldn't be using in ASP.NET किस तरह की चीज है, है ना?

तो ... क्या मुझे यहां कुछ याद आ रही है? क्या एएसपी.नेट में वास्तव में मूल रूप से दोष लग रहा है?

जोड़ा गया: एएमएम, मैं खुद को इस सामान को फिर से लिखने के कगार पर हूं। मैं अभी भी निशान की खोज के लिए साफ उपकरण का उपयोग करना चाहता हूं। किसी भी कारण से मुझे यह नहीं करना चाहिए? शायद अभी कुछ बेहतर है? अगर मुझे जल्द ही कुछ जवाब मिल जाए तो यह वास्तव में अच्छा होगा। :)

जोड़ा गया 2: मेरा एक सहयोगी ने पुष्टि की कि यह केवल सैद्धांतिक मुद्दा नहीं है। उन्होंने इसे उस प्रणाली में देखा है जिस पर वह काम कर रहा है। तो यह बस गया है। मैं एक नई छोटी प्रणाली बनाने जा रहा हूं जो चीजों को वैसे ही करता है जैसा मैं चाहता हूं। :)

जोड़ा गया 3: वाह, ठंडा ... माइक्रोसॉफ्ट के लोगों को एएसपी.नेट में सहसंबंध प्रबंधक का उपयोग करने में कुछ भी गलत नहीं मिला। तो जाहिर है कि हम इस बग के लिए ठीक नहीं हो रहे हैं ...

उत्तर

1

ठीक है, तो यह समाप्त हो गया है।

मेरे सहयोगी ने माइक्रोसॉफ्ट को बुलाया और इस बग को उनके बारे में बताया। प्रमाणित भागीदारों होने का मतलब है कि हमें कुछ और प्राथमिकता निर्धारण फिक्सिंग कतार या कुछ तक पहुंच प्राप्त होती है ... वह सामान नहीं जानते हैं। वैसे भी, वे इस पर काम कर रहे हैं। उम्मीद है कि हम जल्द ही एक पैच देखेंगे। :)

इस बीच मैंने अपनी छोटी सी ट्रेसिंग क्लास बनाई है। यह सभी घंटी और सीटी का समर्थन नहीं करता है कि डिफ़ॉल्ट ट्रेस फ्रेमवर्क करता है, लेकिन यह वही है जो मुझे चाहिए। :) अधिक विशेष रूप से:

  • यह डिफ़ॉल्ट XmlWriterTraceListener रूप में एक ही XML स्वरूप को लिखते हैं तो मैं लॉग का विश्लेषण करने के लिए उपकरण का उपयोग कर सकते हैं।
  • यह लॉग रोटेशन में बनाया गया है - कुछ मेरे सहयोगी को XmlWriterTraceListener के शीर्ष पर खुद को करना था।
  • वास्तविक लॉगिंग किसी अन्य धागे को स्थगित कर दिया गया है ताकि प्रदर्शन को अधिक सटीक रूप से मापा जा सके।
  • सहसंबंध अब HttpContext.Items में संग्रहीत हैं इसलिए एएसपी.नेट थ्रेडिंग विशिष्टताओं को प्रभावित नहीं करते हैं।

हैप्पी एंड, मुझे उम्मीद है। :)

3

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

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

यदि आप पहले से नहीं हैं, तो this guy's site देखें। इस आलेख में वर्णित समस्या विशेष रूप से एक ही समस्या नहीं है जो Cup(Of T) article का उल्लेख है, लेकिन यह अभी भी बहुत दिलचस्प है। वह पृष्ठ पर कई बहुत ही जानकारीपूर्ण लिंक भी प्रदान करता है जो CorrelateionManager के घटकों का वर्णन करता है।

दुर्भाग्यवश, मेरे पास वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन मुझे निश्चित रूप से विषय दिलचस्प लगता है और इसमें इसे देखना जारी रहेगा। तो कृपया इस पोस्ट को अपडेट करें जब आप और जानेंगे। मैं यह देखने के लिए उत्सुक हूं कि आप या दूसरों को क्या उम्मीद है कि उम्मीद है कि इस विषय पर कुछ प्रकाश डाला जा सकता है)।

वैसे भी, शुभकामनाएं। मैं इस बारे में अपने काम पर कुछ झुंडों से बात करूंगा और अगर मुझे कुछ मिल जाए तो बाद में पोस्ट करें।

क्रिस

+0

अच्छा। मुझे अभी तक यह लेख नहीं मिला है। असल में, इस विषय के बारे में Google को कुछ भी असंभव है। अजीब है कि अधिक लोगों ने इसे पकड़ा नहीं है। –

+1

"इस लड़के की साइट" का लिंक बदल गया है: http://sticklebackplastic.com/post/2007/08/14/One-mighty-gotcha-for- सिस्टम डायग्नोस्टिक-activity-Ids.aspx –

+0

लिंक अपडेट किया गया है, धन्यवाद क्रिस – regex

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