2008-11-30 16 views
9

मैं ASP.NET अनुप्रयोग चल रहा है मिल गया है और उत्पादन बॉक्स पर यह 450MB रैम के बारे में उपयोग कर रहा है, तथापि, यह काफी का उपयोग कर नहीं किया जाना चाहिए इतना है, और यह वृद्धि करने के लिए लगता है समय के साथ, ऐसा लगता है कि एक रिसाव हो सकता है या कम से कम कुछ ठीक से जारी नहीं किया जा सकता है।पहचान स्मृति समस्याओं

मैंने पेर्फमॉन के साथ एक नज़र डाली और जीसी जेन 2 में 416 एमबी थी।

किसी को भी यह पता लगाने के लिए कोई विचार है कि यह स्मृति में क्या रख रहा है? क्या मैं सिर्फ डॉटट्रेस/एएनटीएस को पकड़ सकता हूं और किसी भी तरह से इसे अपने आईआईएस (6 - विंडोज सर्वर 2003 पर) से जोड़ सकता हूं - या क्या कोई बेहतर तरीका है? :-)

धन्यवाद।

उत्तर

2

देखना this TecheEd प्रस्तुति एक अच्छी शुरुआत होगी।

वह adplus का उपयोग कर ASP.NET अनुप्रयोग है कि राम के एक महान सौदा लेने वाली है, तो विश्लेषण के लिए WinDbg में है कि डंप लोड हो रहा है की एक डंप लेने के लिए यह दर्शाता है। अप्रत्याशित जड़ों को खोजने और वहां से जाने के लिए WinDbg में gcroot कमांड का उपयोग करें। वह उन जटिल प्रकारों को संग्रहित करने की सलाह देती है जिनमें कैश या सत्र में अन्य ऑब्जेक्ट्स के संदर्भ शामिल हैं।

+1

प्रस्तुति वास्तव में उपयोगी थी - मुझे पहले से ही लगता है कि मेरे पास बहुत अधिक अंतर्दृष्टि है। – RasmusKL

+0

+1 शब्द के आपके उपयोग के लिए यहाँ "डंप"। –

1

यद्यपि यह एक प्रौद्योगिकी आप शायद उपयोग में न हो कवर करता स्मृति मुद्दों का निदान करने के तरीके के बारे में किसी विशिष्ट ब्लॉग है - http://blogs.msdn.com/tess/archive/2008/09/12/asp-net-memory-issues-high-memory-usage-with-ajaxpro.aspx

खुदाई टेस के काम के माध्यम से, वह डिबगिंग/निदान पदों की एक बहुत कुछ मिला है और मैं मुझे यकीन है कि आप अधिक उपयोग कर सकते हैं जो आपके लिए उपयोग में हैं।

0

क्या आप उचित रूप से कक्षाओं की वस्तुओं का निपटान कर रहे हैं जो IDISposable लागू करते हैं? इसमें SqlConnections, SqlCommand, SqlDataAdapter, DirectoryEntry, आदि शामिल होंगे। क्या आपके पास ऐसी कोई ऑब्जेक्ट्स है जो अप्रबंधित स्मृति का उपयोग करती है जो IDISposable (और/या डिस्प्ले नहीं हो रही है) लागू नहीं करती है? टेस द्वारा

+0

हाँ मुझे यकीन है कि मैं हूं :-) – RasmusKL

0

मुझे पूरा यकीन है कि आप पहले से ही सभी गतियों के माध्यम से हैं, लेकिन मुझे एक साइट पर एक ही समस्या है जो मैं बनाए रखता हूं।

साइट मोटे तौर पर सर्वर पर स्मृति का एक गिग, और भी बहुत की जांच और सफाई उपयोग कर रहा था, हम सत्र कॉल का एक बहुत से छुटकारा पाने के रूप में वे की सही ढंग से निपटारा नहीं किया जा रहा था था।

यह भी पता चला है कि समवर्ती उपयोगकर्ताओं है कि मैं था की राशि के साथ मेरी साइट के किसी साइट पर, एक गिग के किसी न किसी अनुमान यह सिर्फ क्या जरूरत थी।

यह भी पता चला है कि पृष्ठ पर बहुत सारे उपयोगकर्ता नियंत्रण लोड करना सर्वर मेमोरी पर थोड़ा तनाव डालता है, यह सुनिश्चित नहीं करता कि क्यों हमने उपयोगकर्ता नियंत्रण को हटाकर और उन्हें छोटे पृष्ठों में बनाकर कुछ मुद्दों को इंगित करने में मदद की।

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

मुझे बताएं कि आप क्या सोचते हैं और यदि आपको मिला और निर्दिष्ट किया गया है। स्मृति के

3

Newing ऊपर एक पाश मुद्दा आप देख रहे हैं कारण बन सकता है में तार का एक समूह की क्लासिक समस्या की वजह से बड़ी मात्रा में उन्हें रिहा बिना नए तार के लिए आवंटित किया जा रहा। क्या आप स्ट्रिंगबिल्डर का उपयोग कर रहे हैं जहां उचित हो?

+0

अच्छा बिंदु। मुझे लगता है कि इसके कुछ मामले हो सकते हैं। अभी भी पोस्ट किए जाने के बाद से इनमें से किसी भी चीज का परीक्षण करने का मौका नहीं मिला है। – RasmusKL

1

क्या आप हर जगह ईवेंट हैंडलर को ठीक से अनचाहे कर रहे हैं? मुझे बताया गया है कि यदि आप उन्हें घटना से अलग नहीं करते हैं तो वे चारों ओर बैठे रह सकते हैं। वे आवश्यकतानुसार लंबे समय तक बड़ी वस्तुओं के संदर्भ रख सकते हैं।

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