2011-02-04 17 views
8

हमारे पास टॉमकैट सर्वर पर एक वेब एप्लिकेशन तैनात किया गया है। कुछ नियत नौकरियां हैं जिन्हें हम चलाते हैं, जिसके बाद ढेर मेमोरी ऊपर गिर जाती है और बस जाती है, सबकुछ ठीक लगता है। हालांकि सिस्टम व्यवस्थापक शिकायत कर रहा है कि मेमोरी उपयोग (लिनक्स पर 'टॉप') निर्धारित नियत नौकरियों को और बढ़ाता रहता है। सीपीयू की ढेर मेमोरी और मेमोरी के बीच सह-संबंध क्या है? क्या इसे किसी भी जेवीएम सेटिंग्स द्वारा नियंत्रित किया जा सकता है? सिस्टम की निगरानी के लिए मैंने जेकोनसोल का उपयोग किया था।
मैंने जेकोनसोल के माध्यम से कचरा संग्रह को मजबूर कर दिया और ढेर का उपयोग नीचे आया, हालांकि पर मेमोरी उपयोग लिनक्स उच्च बना रहा और यह कभी कम नहीं हुआ।प्रोसेस मेमोरी बनाम हीप - जेवीएम

कोई भी विचार या सुझाव बहुत मददगार होंगे?

+0

सर्वर स्पष्ट रूप से एक 64 बिट सर्वर है। – user546352

+0

क्या आप जानते हैं कि सर्वर क्या जेवीएम चल रहा है, और कचरे के संग्रह को मजबूर करने के बाद हीप मेमोरी उपयोग और वास्तविक मेमोरी उपयोग के बीच क्या अंतर था? –

+0

>> हालांकि लिनक्स पर स्मृति उपयोग उच्च बना रहा और यह कभी कम नहीं हुआ। << "स्मृति उपयोग" कौन सा है?जीसी आमतौर पर सिस्टम में स्मृति वापस नहीं करना पसंद करता है। – bestsss

उत्तर

4

क्या देखा जा सकता है वर्चुअल आकार और जावा प्रक्रिया (एसएस) के निवासी सेट आकार नहीं है? यदि आपके पास एक छोटे पदचिह्न के लिए एक लक्ष्य है, तो आप -Xms या जेवीएम ढेर तर्कों पर किसी भी न्यूनतम आकार को शामिल कर सकते हैं और 70% -XX:MaxHeapFreeRatio= को एक छोटी संख्या में समायोजित कर सकते हैं ताकि अधिक आक्रामक ढेर संकोचन की अनुमति मिल सके।

इस बीच, लिनक्स मेमोरी कभी कम नहीं हुई टिप्पणी के साथ क्या देखा गया था, इसके बारे में अधिक जानकारी प्रदान करते हैं? क्या मीट्रिक?

+0

'टॉप' कमांड के साथ% एमईएम उच्च रहता है और अधिक नौकरियां निर्धारित होने के बाद आगे बढ़ती रहती है,% CPU नीचे आती है और ढेर ठीक लगता है। – user546352

+0

% एमईएम प्राथमिक स्मृति के अनुपात में आरईएस का% है, जो आम तौर पर प्राथमिक में निवासी आकार की रिपोर्ट करता है। '-Xms' और' -Xmx' विकल्प क्या हैं? आरईएस/वीआईआरटी और% आरईएस/एसएचआर के% की गणना करें और रिपोर्ट करें। यह उच्च रिपोर्ट कर सकता है लेकिन प्रक्रिया (एस) में एक अच्छा हिस्सा साझा किया जा सकता है। – Xailor

+0

मुझे लगता है कि एसएचआर किलोबाइट्स में है और यह इस तरह दिखा रहा है। आरईएस/वीआईआरटी = 56% और आरईएस/एसएचआर = 117.7 9 यह 'एम' विकल्प के साथ शीर्ष आउटपुट है। पीआईडी ​​उपयोगकर्ता पीआर एनआई VIRT आरईएस SHR S% सीपीयू% सदस्य समय + Command 14425 जड़ 17 0 1990m 1.1g 9792 एस 0.0 54.5 23: ०१.६२ जावा इस के बाद मैं परिवर्तन आप -XX का सुझाव दिया बनाई गई है: MaxHeapFreeRatio, यह लगता है कि थोड़ा बेहतर व्यवहार करता है, मैं अभी भी कुछ परीक्षण चला रहा हूं। मैंने देखा कि नौकरियां चलने पर सीपीयू% 100% से अधिक है ... – user546352

0

आप ढेर के आकार को समायोजित करने के लिए -Xmx और -Xms सेटिंग्स का उपयोग कर सकते हैं। बिल्ला के साथ आप शुरू करने से पहले एक वातावरण चर सेट कर सकते हैं:

export JAVA_OPTS=”-Xms256m -Xmx512m” 

यह शुरू में 256MB का एक ढेर बनाता है, 512MB की एक अधिकतम आकार के साथ।

कुछ और जानकारी: http://confluence.atlassian.com/display/CONF25/Fix+ + बढ़ती + उपलब्ध + स्मृति

8

स्मृति JVM प्रक्रिया द्वारा आवंटित द्वारा + त्रुटियों + 'आउट + मेमोरी +' ढेर आकार के रूप में ही नहीं है। उपयोग किए गए ढेर का आकार JVM द्वारा आवंटित स्थान में वास्तविक कमी के बिना नीचे जा सकता है। JVM को एक ट्रिगर प्राप्त करना होता है जो दर्शाता है कि इसे ढेर आकार को कम करना चाहिए। @Xepoch उल्लेख के रूप में, यह -XX:MaxHeapFreeRatio द्वारा नियंत्रित किया जाता है।

हालांकि सिस्टम व्यवस्थापक शिकायत कर रहा है कि मेमोरी उपयोग (लिनक्स पर 'टॉप') नियत नौकरियों को चलाने में अधिक रहता है [रन]।

ऐसा इसलिए है क्योंकि आपके पास कुछ प्रकार की स्मृति रिसाव है। सिस्टम प्रशासक शिकायत करते हैं जब वे प्रक्रियाओं को धीरे-धीरे अधिक से अधिक स्थान चबाते देखते हैं।

कोई भी विचार या सुझाव बहुत मददगार होंगे?

क्या आपने धागे की संख्या देखी है? क्या आप अपने स्वयं के धागे बना रहे हैं और उन्हें डेडलॉक पर भेज रहे हैं और हमेशा के लिए मूर्खतापूर्ण इंतजार कर रहे हैं? क्या आप किसी भी तृतीय पक्ष एपीआई के साथ एकीकृत कर रहे हैं जो जेएनआई का उपयोग कर सकता है?

+2

+1। – Xailor

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