2013-02-07 83 views
30

मेरी जेनकिन्स नौकरियां मेमोरी से बाहर चल रही हैं, जिससे बिल्ड लॉग में java.lang.OutOfMemoryError संदेश दिए गए हैं। लेकिन मैंने जेनकिन्स को स्थापित करने के लिए उबंटू पैकेज मैनेजर, aptitude, या apt-get का उपयोग किया, और मुझे नहीं पता कि जेनकींस को आवंटित ढेर स्थान की मात्रा को बदलने के लिए कहां देखना है।जब मैं उबंटू पर डेमॉन के रूप में दौड़ रहा हूं तो मैं जेनकींस को और ढेर जगह कैसे दे सकता हूं?

उत्तर

57

वहाँ OutOfMemoryError संदेशों आपके सामने आ सकने के दो प्रकार के हैं, जबकि एक जेनकींस काम चलता है:

  • java.lang.OutOfMemoryError: Heap space - इसका मतलब यह है कि आप जेनकींस के लिए आवंटित ढेर अंतरिक्ष की राशि में वृद्धि करने की आवश्यकता है जब डेमॉन शुरू होता है ।
  • java.lang.OutOfMemoryError: PermGen space - इसका मतलब है कि आपको जावा ऑब्जेक्ट मेटाडेटा को संग्रहीत करने के लिए आवंटित पीढ़ी की जगह बढ़ाने की आवश्यकता है। बढ़ रहा है -Xmx पैरामीटर का मान इस त्रुटि पर कोई प्रभाव नहीं पड़ेगा।

Ubuntu 12.04 LTS पर, /etc/default/jenkins की लाइन दस पर JAVA_ARGS सेटिंग uncomment:

  • अधिक जावा ढेर अंतरिक्ष जोड़ने के लिए, -Xmx जावा पैरामीटर के मूल्य में वृद्धि। यह मेमोरी आवंटन पूल (कचरा एकत्रित ढेर) का अधिकतम आकार सेट करता है।
  • अधिक PermGen अंतरिक्ष जोड़ने के लिए, पैरामीटर जोड़ने XX:MaxPermSize=512m (कुछ और के साथ 512 की जगह यदि आप और अधिक चाहते हैं। स्थायी पीढ़ी ढेर उपयोगकर्ता कक्षाओं के बारे में मेटा जानकारी रखती है।

उदाहरण के लिए, इस उद्धरण डिफ़ॉल्ट से है /etc/default/jenkins के बाद एक ताजा जेनकींस की स्थापित:

# arguments to pass to java 
JAVA_ARGS="-Xmx1048m" 
01:

# arguments to pass to java 
#JAVA_ARGS="-Xmx256m" 

यह आपको ढेर अंतरिक्ष सेट करते हैं तो 1 जीबी होने के लिए यह इस तरह दिखाई देंगे है

ढेर आकार को बहुत बड़ा सेट न करने के लिए सावधान रहें, क्योंकि जो कुछ भी आप आवंटित करते हैं वह ऑपरेटिंग सिस्टम और अन्य प्रोग्रामों के लिए उपलब्ध स्मृति की मात्रा को कम करता है, जो अत्यधिक पेजिंग (स्मृति और रैप और स्वैप डिस्क के बीच आगे और पीछे बदल सकता है, जो आपके सिस्टम को धीमा कर देगा)।

आप भी MaxPermSpace सेट हैं, तो आप) मानकों के बीच एक रिक्ति जोड़ने की जरूरत:

# arguments to pass to java 
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m" 

परिवर्तन करने के बाद, जेनकींस जेनकींस वेब इंटरफेस से शान से पुनः आरंभ, या आदेश से एक तत्काल पुनः आरंभ करने के लिए मजबूर sudo /etc/init.d/jenkins restart के साथ लाइन करें।

मुझे निम्न साइट जावा अधिकतम और स्थायी पीढ़ी ढेर आकार को समझने के लिए उपयोगी साइट मिली: http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html

+1

मुझे लगता है कि आप सेकंड में भूल गया डैश, तो यह होना चाहिए: JAVA_ARGS = "- Xmx1048m -XX: MaxPermSize = 512m" –

+0

धन्यवाद! मैंने लापता डैश जोड़ा है। –

+0

एनपी, उत्तर के लिए धन्यवाद। –

21

CentOS के लिए, निर्देशिका जेनकिन्स.एक्सएमएल डिफ़ॉल्ट रूप से स्थित है/जेनकिन्स-1.579-1 के लिए/etc/sysconfig/निर्देशिका है।1

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="

+3

चीयर्स, मैं इस – bmaher

+0

को खोजने के लिए पागल हो रहा था, मेरे ** ओपनएसयूएसई लीप ** 42.1 (x86_64) पर संस्करण 2.70 के लिए जेनकींस कॉन्फ़िगरेशन '/ etc/sysconfig/jenkins' – user1053510

+0

में भी RedHat RHEL 7.4, जेनकींस के लिए स्थित है 2.98 –

1

आप उबंटू सर्वर का उपयोग कर रहे हैं, तो पहले Monitoring प्लगइन स्थापित कितनी स्मृति जेनकींस उपयोग कर रहा है देखने के लिए। उदाहरण के लिए, इस मैं इसे स्थापित करने के बाद क्या देखा है:

enter image description here

फिर, आदेश free -m के साथ, मैं पता लगा सर्वर की स्मृति आकार था क्या। मेरे मामले में, 16 जीबी। उस जानकारी के साथ, मैं /etc/default/jenkins खोला और बदल दिया है:

JAVA_ARGS="-Djava.awt.headless=true"

JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"

कहाँ 8384 8Gb है। तब मैं आदेश sudo service jenkins restart साथ जेनकींस को पुनः आरंभ और फिर, नौकरी कि स्मृति मुद्दों हो रही थी ट्रिगर करने के बाद, चीजों को ज्यादा बेहतर देखा और काम इस और बाद में रन पूरा कर सकता है:

enter image description here