रनिंग प्रक्रियाओं की सूची के बाहर विंडोज सर्वर पर मेमोरी उपयोग की व्याख्या कैसे करें


9

मेरे पास एक विंडोज 2003 सर्वर है जो थोड़ा धीमा चल रहा है जहां कमिट चार्ज और पेज फाइल का उपयोग टिक-अप करता है जब तक कि मैं अंततः रिबूट नहीं करता। इसे ठीक करने के लिए मुझे यह पता लगाने की आवश्यकता है कि सभी मेमोरी का उपभोग क्या है, और यह वह जगह है जहां बड़ा रहस्य है।

कार्य प्रबंधक के वर्तमान आँकड़े:

Physical Memory (K): 2096400
Commit Charge (K):   5364848
Page file usage:     5.11 GB

ठीक है, तो चलिए SysInternals Process Explorer को खींचते हैं और चल रहे हर चीज के काम के आकार की जाँच करते हैं। सबसे बड़ा अपराधी एक टॉमकैट उदाहरण है जिसमें 121,980K WS, 481,284K VM आकार का उपयोग किया गया है। 5 जीबी कमिट चार्ज की व्याख्या करने के लिए कुछ भी नहीं है।

अगला चरण: SysInternals pslist :, pslist -mकॉलम द्वारा आउटपुट को विभाजित करें और रिपोर्ट की गई 61 प्रक्रियाओं के लिए कॉलम रकम की गणना करें।

SUM (Working Set)  : 681,484 K
SUM (Private Bytes): 593,424 K

क्या मैं मूलभूत रूप से गलत समझ रहा हूं कि उपकरण क्या रिपोर्ट कर रहे हैं? मैं हमेशा इस धारणा के अधीन रहा हूं कि एक OS वास्तव में एक प्रक्रिया द्वारा मैप की गई वर्चुअल मेमोरी की पूरी मात्रा की तुलना में बहुत कम मेमोरी करेगा, इस धारणा पर कि यह वास्तव में कभी भी इतना उपयोग नहीं करेगा, और यह कि यहां वीएम को देख रहा है। अफवाह।


1
अद्यतन: हाँ, यह प्रणाली पेजिंग है, और मुझे अक्सर "वर्चुअल मेमोरी से बाहर चल रहा है" चेतावनी मिल रही है। जब भी मुझे चेतावनी मिलती है मैं मेमोरी स्टैटस की जांच करता हूं और ऐसी कोई प्रक्रिया नहीं होती है जो विशेष रूप से दुर्व्यवहार करने वाली लगती है, लेकिन मेमोरी, कमिटेड बाइट्स स्टेट हमेशा 5 जीबी से अधिक होती है।
jpdaigle

जवाबों:


1

जेपी, मैं आपकी टिप्पणी को मानता हूं कि यह एक स्वचालित बिल्ड / यूनिट टेस्ट सर्वर है जो स्थिर कोड से कम चल रहा है। मेरा अनुमान है कि इस सर्वर को बार-बार रिबूट करने की आवश्यकता है क्योंकि इस पर चल रहे अस्थिर कोड में संभवतः मेमोरी लीक हैं जो आपको दिखाई देने वाले लक्षणों को दे रहे हैं। मेमोरी लीक चल रही प्रक्रियाओं में से किसी भी प्रक्रिया के पेड़ों पर सूचीबद्ध नहीं होने जा रही है क्योंकि वे ऐसी मेमोरी हैं जो उन प्रक्रियाओं द्वारा हड़पी जाती हैं जो अब मौजूद नहीं हैं, और अभी भी आवंटित हैं, भले ही उनके साथ जुड़ी प्रक्रिया लंबे समय से चली गई हो।

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

हमारे पास कुछ समय पहले Windoze पर Oracle अनुप्रयोग सर्वर सर्वर हैं जिन्हें प्रतिदिन दो बार रिबूट करने की आवश्यकता है। हमने उपयोगकर्ताओं को दोपहर के भोजन के समय और हर दिन रात के मध्य में बाहर निकाला। कुछ साल पहले यह ओरेकल से माना जाता है कि स्थिर प्रोडक्शंस कोड था।


2

बस कुछ लिंक पेस्ट करने के लिए क्षमा करें - लेकिन हम कुछ तकनीकों का उपयोग मेमोरी लीक को खोजने के लिए कर रहे हैं, लॉगरपर और पावरशेल का उपयोग कर रहे हैं, इसलिए मैं साझा करूंगा।

http://blogs.msdn.com/debuggingtoolbox/archive/2008/08/22/powershell-script-chart-and-statistics-from-top-20-objects-leaking.aspx

(नेवर डाउट तेय डिबगर साइट उत्कृष्ट है): http://blogs.msdn.com/carloc/archive/2007/09/14/something-you-need-to-know-before-start-debugging.aspx

मैं Windows पर मेमोरी उपयोग के लिए मार्क रोसिनोविच की उत्कृष्ट अंतर्दृष्टि का लिंक भी प्रदान करूंगा:

http://blogs.technet.com/markrussinovich/search.aspx?q=memory&p=1

वास्तविक Microsoft मामलों को खोलने के लिए, प्रदर्शन टीम की साइट में बहुत सारी अच्छी जानकारी है: http://blogs.technet.com/askperf/Default.aspx?p=2


1

इस निदान में मदद करने के लिए priciple उपकरण परफ्यूम है। जिन काउंटरों को मैं देखूंगा (जिनके साथ शुरुआत करनी है) हैं:

मेमोरी,
कमिटेड बाइट्स यह वर्चुअल मेमोरी प्रोसेस, वर्किंग सेट, _Total वर्चुअल मेमोरी की "एक्टिव" यूज में
पेजिंग फाइल,
मेमोरी, पेज / सेक में यूज होने वाले% पेजफाइल की मांग का एक पैमाना है (यह जरूरी नहीं कि लो मेमोरी का संकेतक हो हालाँकि, सभी को लगता है कि यह करता है)
मेमोरी, पेज आउटपुट / सेक, कितने वर्चुअल मेमोरी पेज पेजफाइल को लिखे गए थे ताकि हर दूसरे सेकंड के लिए रैम पेज फ्रेम को फ्री कर दिया जाए

मेमोरी, कैश बाइट्स
मेमोरी, पूल नॉनपेजेड बाइट्स मेमोरी, पूल पेजेड
बाइट्स
मेमोरी, सिस्टम कोड टोटल बाइट्स
मेमोरी, सिस्टम ड्राइवर टोटल बाइट्स

जब यह योग 2GB के करीब हो जाता है, तो आपके पास 32 बिट आर्किटेक्चर के कारण आमतौर पर प्रदर्शन के मुद्दे होंगे

मेमोरी, उपलब्ध एमबीटीज़- यह मापता है कि वर्चुअल मेमोरी (या तो नए आवंटन, या पेजफाइल से एक पृष्ठ को पुनर्स्थापित करने के लिए) के लिए मांगों को पूरा करने के लिए कितना रैम उपलब्ध है।

Http://members.shaw.ca/bsanders/WindowsGeneralWeb/RAMVirtualMemoryPageFileEtc.htm भी देखें


दिलचस्प लिंक। इस सर्वर पर, मैं 640MB पर कुल प्रोसेस वर्किंग सेट देख रहा हूं, लेकिन "मेमोरी, कमिटेड बाइट्स" 5.4GB है। आपके द्वारा उल्लिखित अन्य काउंटरों में से कोई भी बहुत अधिक नहीं है। मुझे अक्सर "वर्चुअल मेमोरी से बाहर चल रहा है" चेतावनी मिलती है, यही वजह है कि मैं जांच कर रहा हूं। ओपी को टिप्पणी जोड़ना।
जपदग्ले

1

अंतिम रिबूट के बाद से वह सर्वर कितने समय से चल रहा है? यह जीवन का एक दुर्भाग्यपूर्ण तथ्य है कि विंडोज में मेमोरी लीक है। यानी मेमोरी जो आवंटित की जाती है, हमेशा सिस्टम में वापस नहीं आती है। लक्षण बिल्कुल वही हैं जो आप देख रहे हैं। यदि आप पहले से ही ऐसा नहीं करते हैं तो मैं सप्ताह में कम से कम एक बार रिबूट करने का सुझाव दूंगा। कई डेटा सेंटर हर दिन विंडोज को रिबूट करते हैं, क्योंकि ऐसा करने से समर्थन कॉल पर बहुत कटौती होती है। निश्चित रूप से यह बहुत आसान है जब आप क्लस्टर का उपयोग करते हैं क्योंकि कोई डाउन टाइम नहीं है।


0

यह कहा जाता है कि कहीं न कहीं एक sysadmin है जो वास्तव में Windows मेमोरी आँकड़ों को समझता है, लेकिन मैं उनसे कभी नहीं मिला।

हालांकि यह आमतौर पर एक दुर्व्यवहार प्रक्रिया को खोजने के लिए बहुत मुश्किल नहीं है। विभिन्न सामनों जैसे हैंडल या पेज दोष / सेकंड को देखने के लिए परफ्यूम का उपयोग करने का प्रयास करें।

जे आर

आगे के विचार: क्या आपको यकीन है कि आप वास्तव में मेमोरी पर कम हैं। महत्वपूर्ण बात यह है कि क्या आपके पेजिंग हो रहे हैं। यदि कोई पृष्ठन नहीं है तो आप स्मृति पर कम नहीं हैं। PerfMon का उपयोग मेमोरी - पेज / सेकंड काउंटर पर एक नज़र है।


मैं चल रही प्रक्रियाओं में कुछ भी स्पष्ट नहीं देखता। क्या किसी प्रक्रिया से बाहर निकलने के बाद मेमोरी के लिए ओएस द्वारा पुनर्प्राप्त नहीं किया जा सकता है? यह एक स्वचालित बिल्ड / यूनिट टेस्ट सर्वर है, इसलिए निश्चित रूप से प्रक्रियाएं हर समय दुर्घटनाग्रस्त हो जाती हैं, क्योंकि यह हमेशा खून बह रहा है-बढ़त का निर्माण स्वचालित रूप से SVN से होता है।
jpdaigle

कुछ और विचारों के लिए मेरा संपादन देखें
जॉन रेनी

0

याद रखें कि वर्किंग सेट एक ऐसी मेमोरी है जो वास्तव में वास्तविक भौतिक मेमोरी द्वारा दर्शाई जाती है। आपके पास अपना वर्चुअल मेमोरी चार्ज भी है, और विंडोज कोड पेज शेयरिंग करता है, एमएफसी के कुछ हिस्सा बहुत सारे और बहुत सारी प्रक्रियाओं के बीच मेमोरी के उपयोग को दोहराए बिना साझा करने जा रहे हैं। साथ ही आपके पास विंडोज सिस्टम कैश को यथासंभव बड़ा रखने की इच्छा है (जैसा कि मैंने पहले 2.5GB लैपटॉप पर 800MB तक गुब्बारा देखा है)।

विंडोज मेमोरी मैनेजमेंट बहुत मजबूत है। हालांकि एक बार जब विंडोज पेजिंग करना शुरू कर देता है, तो चीजें बदसूरत हो जाती हैं, और आपको हमेशा फाइल कैश के लिए कमरा छोड़ना पड़ता है - हमेशा हमेशा। मुझे नियमित रूप से फ़ायरफ़ॉक्स को शटडाउन और रीस्टार्ट करना पड़ता है जब मेरा 80+ टैब ड्राइव करता है तो इसकी मेमोरी खपत 1.2gb / 1.2 + gb तक होती है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.