2012-05-13 21 views
10

मेरे पास 7 अलग-अलग जावा डिमन्स हैं जो मैं चलाता हूं (सभी 7) 3 अलग-अलग सर्वरों पर। जावा कमांड लाइन में -Xmx2048m और -Xss1024k है। इन 3 सर्वरों पर, सभी 21 प्रक्रियाएं शीर्ष पर और ऊपर VIRT आकार के लिए केवल 2.5 जीबी से कम दिखाई देती हैं। आरईएस आकार 300 से 1.9 जीबी के बीच बदलता है, जिसके अनुसार यह डिमन है।जावा प्रक्रिया को एक्सएमएक्स या एक्सएसएस सीमा से काफी अधिक होने का कारण क्या होगा?

यह सब कुछ होना चाहिए जैसा कि होना चाहिए।

नया सर्वर दर्ज करें। तेज़ सीपीयू, अधिक रैम (8 जीबी की बजाय 16 जीबी), थोड़ा नया जावा (पुराने सर्वर पर 1.6.0_10-बी 33, नए सर्वर पर 1.6.0_31-बी04)। दोनों सिस्टम (और जेवीएम) 64 बिट हैं।

नए सर्वर पर 2 डेमॉन को हटा दिया गया। नए सर्वर पर, एक ही कार्य को देखते हुए, डेमॉन दोनों अधिक सीपीयू (कोर के लायक के बारे में) और कम काम करने वाले दोनों उपभोग कर रहे हैं। (पुराने सिस्टम पर 5110 प्रोसेसर से नए पर 5620 तक स्थानांतरित)।

सीपीयू उपयोग (जीसी थ्रेड ??) का बहुत अधिक अतिरिक्त कोर और एक डेमॉन के लिए 5 जीबी वीआईआरटी और 2 जीबी आरईएस और अन्य डिमन के लिए 2 जीबी वीआईआरटी और 2 जीबी आरईएस की रिपोर्टिंग।

किसी भी विचार से जावा को अनदेखा करने के लिए क्या कारण होगा (या अगर यह मामला अनदेखा होता है) स्मृति सीमा?

+0

वीआईआरटी वर्चुअल मेमोरी है, जिसका ढेर अंतरिक्ष के साथ कोई सीधा संबंध नहीं है। मैं इस प्रश्न के उत्तर पढ़ने की अनुशंसा करता हूं: http://stackoverflow.com/questions/4893192/process-memory-vs-heap-jvm –

+0

क्या आपने नई मशीन पर जावा के उसी संस्करण के साथ प्रयास किया था? क्या वे दोनों एक ही बिट-नेस हैं? –

+0

'एक्सएमएक्स' जेवीएम के स्मृति उपयोग को निर्दिष्ट नहीं करता है; यह ढेर आवंटन पूल का अधिकतम आकार निर्दिष्ट करता है, जो कि जेवीएम द्वारा उपयोग किए जाने वाले मेमोरी पूल में से एक है। – skaffman

उत्तर

8

यह एक ग्लिब समस्या है बाहर निकलता है।

मेरे लिए संक्षिप्त उत्तर था:

निर्यात MALLOC_ARENA_MAX = 1

यह रूप में ज्यादा से प्रक्रिया पदचिह्न (ऊपर में VIRT) में कमी आई 5x के रूप में।

http://www.centos.org/docs/5/html/5.4/Technical_Notes/glibc.html

1.71.1 लॉग अनुभाग में अंतिम आइटम यह चर्चा करता है: स्तरों CentOS में देखा पर वापस 5.

glibc के हाल के संस्करण में एक नई सुविधा "प्रति-धागा स्मृति पूल्स" है (और एक गैर-सार्वजनिक बग को संदर्भित करता है ....)

+2

आप मल्टी-थ्रेडिंग मेमोरी लाभों में से कुछ प्राप्त करने के लिए MALLOC_ARENA_MAX को 4 के बजाय 4 सेट करना चाहते हैं, जो परिवर्तन को संबोधित करने का इरादा था। इसे देखें: issues.apache.org/jira/browse/HADOOP-7154 – michael

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

  • कोई संबंधित समस्या नहीं^_^