मेरे पास मेरे सर्वर पर एक वेबसाइट है, और मेरी आईआईएस वर्कर प्रक्रिया लगातार 4 जीबी रैम का उपयोग कर रही है। मुझे क्या जांचना चाहिए?आईआईएस वर्कर प्रक्रिया बहुत सारी स्मृति का उपयोग कर?
c:\windows\system32\inetsrv\w3wp.exe
मेरे पास मेरे सर्वर पर एक वेबसाइट है, और मेरी आईआईएस वर्कर प्रक्रिया लगातार 4 जीबी रैम का उपयोग कर रही है। मुझे क्या जांचना चाहिए?आईआईएस वर्कर प्रक्रिया बहुत सारी स्मृति का उपयोग कर?
c:\windows\system32\inetsrv\w3wp.exe
मैं document गुलजार में उल्लिखित सीएलआर ट्यूनिंग अनुभाग की जांच करूंगा।
जैसा कि अन्य पोस्टर इंगित करते हैं, IDispose
लागू करने वाली कोई भी वस्तु Dispose()
होनी चाहिए जब इसे समाप्त हो जाए, अधिमानतः using
निर्माण का उपयोग कर।
अप perfmon.exe
आग और जोड़ने इन काउंटरों:
- प्रक्रिया \ निजी बाइट्स
- .NET CLR मेमोरी # बाइट्स सब ढेर
- प्रक्रिया में \ कार्य सेट
- .NET CLR मेमोरी \ बड़े ऑब्जेक्ट हीप आकार
निजी बाइट्स में वृद्धि सभी हीप्स काउंटर में बाइट्स की संख्या बनी हुई है, जो समान रूप से अप्रबंधित मेमोरी खपत को इंगित करती है।
में वृद्धि दोनों काउंटरों कामयाब स्मृति खपत इंगित करता है
में समस्या निवारण स्मृति बाधाओं से संबंधित अनुभाग स्रोत कोड के लिए उपयोग किया है, तो आप जांच करने के लिए है कि किसी भी वस्तुओं है कि IDisposable लागू using
बयान के अंदर उनका संदर्भ दिया जा या ठीक से निपटाया जा रहा है चाहते हो सकता है जब आप उनके साथ किया जाता है।
Using
एक सी # निर्माण है, लेकिन मूल विचार यह है कि जब आप पूरा कर लेते हैं तो आप संसाधनों को मुक्त कर रहे हैं।
जांच करने की एक और चीज है "प्रक्रिया में" सत्र स्थिति या कैश में बड़ी वस्तुएं डाल रही हैं।
अधिक जानकारी निश्चित रूप से मददगार होगी। एप्लिकेशन पूल के अंदर कितने एप्लिकेशन चल रहे हैं? पूल में एएसपी.NET अनुप्रयोग हैं?
यदि आप एएसपी.NET चला रहे हैं, तो सत्र और कैश चर में जो भी आप संग्रहीत कर रहे हैं, उस पर एक अच्छी नज़र डालें। पेफमॉन का प्रयोग यह जांचने के लिए करें कि कितने जनरेशन 0, 1 और 2 संग्रह हो रहे हैं। सत्र स्थिति या कैश में UI तत्वों को संग्रहीत करने से सावधान रहें क्योंकि इससे पूरे पृष्ठ के उदाहरण और पृष्ठ के सभी उदाहरणों के बच्चों को भी एकत्रित किया जा सकेगा। अंत में, यह देखने के लिए जांचें कि क्या आप बहुत सी स्ट्रिंग कॉन्सटेनेशन कर रहे हैं। यह बहुत ऑब्जेक्ट इंस्टॉलेशन का कारण बन सकता है क्योंकि .NET स्ट्रिंग्स अपरिवर्तनीय हैं। इसके बजाय स्ट्रिंगबिल्डर का उपयोग करने में देखो।
साथ एक ज्ञात समस्या है W3wp प्रक्रिया का मिनी-डंप बनाएं और यह देखने के लिए कि कौन सी ऑब्जेक्ट मेमोरी में हैं, WinDbg का उपयोग करें। माइक्रोसॉफ्ट में आईआईएस समर्थन टीम यह है कि जब भी उन्हें इस तरह के प्रश्न मिलते हैं।
हां, लेकिन यदि तार बड़े ऑब्जेक्ट ढेर पर हैं, तो वे केवल जनरल 2 संग्रह के दौरान एकत्र किए जाएंगे यदि मुझे गलत नहीं लगता है। – Maxam