2013-08-16 4 views
5

मैं एक MVC3 अनुप्रयोग है कि लोड के अंतर्गत विफल हो रहा है से इस त्रुटि की जांच कर रहा हूँ की निगरानी के लिए प्रदर्शन मॉनिटर का उपयोग करना:।जमा कनेक्शन

"समय समाप्ति की अवधि पूल से कनेक्शन प्राप्त करने के लिए पहले गुजरे यह सब क्योंकि हुई हो सकती है पूल किए गए कनेक्शन उपयोग में थे और अधिकतम पूल आकार तक पहुंच गया था। "

एप्लिकेशन रिपोजिटरी पैटर्न और इकाई फ्रेमवर्क का उपयोग कर रहा है, और मेरा हल यह है कि यह कनेक्शन को ठीक से बंद नहीं कर रहा है। मैं SQL सर्वर पर पूल किए गए कनेक्शन की संख्या की निगरानी करने में सक्षम होना चाहता हूं। चारों ओर सर्च कर रहे हैं मुझे विश्वास है कि मैं परफ़ॉर्मेंस इन काउंटरों का उपयोग कर सकते हैं:

  • .NET CLR डाटा
  • SQLServer

हालांकि उन दोनों को दिखाने के लिए

  • नेट डेटा प्रदाता और अक्षम किया जा/धूसर हो बाहर।

    मैं सीधे सर्वर पर पेर्फोन चला रहा हूं, और सर्वर पर आईएसएस और एसक्यूएल सर्वर दोनों चल रहे हैं। कोई विचार क्यों इन काउंटर उपलब्ध नहीं होंगे?

    मैंने पूल कनेक्शनों की निगरानी के लिए एसक्यूएल प्रोफाइलर का उपयोग करने का भी प्रयास किया है, लेकिन EventSubClass कॉलम AuditLogin के लिए उपलब्ध नहीं है।

  • +0

    दूसरा काउंटर मेरा मानना ​​है कि सही से एक है। जब आप भूरे रंग के होते हैं तो आपका क्या मतलब है? जैसा कि आप उन मॉनीटर को जोड़ नहीं सकते? क्या आपके पास मशीन तक व्यवस्थापक पहुंच है? – DavidN

    +0

    हां, अगर मैं उन मॉनीटर को जोड़ने का प्रयास करता हूं, तो कुछ भी नहीं होता है। और मैं मशीन पर एक व्यवस्थापक हूं – VincentH

    उत्तर

    6

    आप इसे एक SQL क्वेरी विंडो से गिनने और वर्तमान कनेक्शन और आपके SQL सर्वर पर चलने वाले सत्र के विवरण के लिए चला सकते हैं।

    select * FROM sys.dm_exec_sessions AS es 
    INNER JOIN sys.dm_exec_connections AS ec 
    ON es.session_id = ec.session_id 
    

    मुझे पूल कनेक्शन के साथ परेशानी हुई है। उन्हें नियंत्रित करना मुश्किल है। स्पष्ट रूप से उन्हें बंद करना कभी काम नहीं कर रहा था क्योंकि वे .NET के नियंत्रण में हैं। कनेक्शन से बाहर निकलने का सबसे बड़ा कारण असामान्य लेनदेन है। यदि किसी लेनदेन को किसी कारण से छोड़ा गया या वापस ले जाया गया है, तो कनेक्शन का उपयोग करने के बजाय कनेक्शन, लिम्बो में फंस गया है, प्रोसेसिंग जारी रखने के लिए .NET को अभी तक एक और कनेक्शन खोलने के लिए मजबूर कर रहा है।

    +0

    यह उपयोगी लग रहा है - लेकिन क्या यह मुझे बताता है कि कनेक्शन पूल किया गया है या नहीं? – VincentH

    +0

    कोई लाइव कनेक्शन पूल होने पर खोजने का एक गतिशील, queriable तरीका प्रतीत नहीं होता है। मैंने देखा कि सभी उदाहरण ए पर भरोसा करते हैं) एक टेबल और कनेक्शन डेटा स्टोर करने के लिए एक ट्रिगर बनाना और बी) तालिका को पॉप्युलेट करने के लिए लॉगिन ईवेंट डेटा (जिसमें IsPooled शामिल है) का उपयोग करना। यहां एक उदाहरण दिया गया है: http: //www.sqlservercentral.com/Forums/Topic798425-146-1.aspx#bm798660 – Brian

    1

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

    Audit Login Event Class

    आवेदन पक्ष आप परफ़ॉर्मेंस पर "एसक्यूएल सर्वर के लिए नेट डेटा प्रदाता" के प्रदर्शन काउंटरों का उपयोग कर सकते पर।

    Performance Counters in ADO.NET

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