मेरी जेनकिन्स नौकरियां मेमोरी से बाहर चल रही हैं, जिससे बिल्ड लॉग में java.lang.OutOfMemoryError
संदेश दिए गए हैं। लेकिन मैंने जेनकिन्स को स्थापित करने के लिए उबंटू पैकेज मैनेजर, aptitude
, या apt-get
का उपयोग किया, और मुझे नहीं पता कि जेनकींस को आवंटित ढेर स्थान की मात्रा को बदलने के लिए कहां देखना है।जब मैं उबंटू पर डेमॉन के रूप में दौड़ रहा हूं तो मैं जेनकींस को और ढेर जगह कैसे दे सकता हूं?
उत्तर
वहाँ 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।
CentOS के लिए, निर्देशिका जेनकिन्स.एक्सएमएल डिफ़ॉल्ट रूप से स्थित है/जेनकिन्स-1.579-1 के लिए/etc/sysconfig/निर्देशिका है।1
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
चीयर्स, मैं इस – bmaher
को खोजने के लिए पागल हो रहा था, मेरे ** ओपनएसयूएसई लीप ** 42.1 (x86_64) पर संस्करण 2.70 के लिए जेनकींस कॉन्फ़िगरेशन '/ etc/sysconfig/jenkins' – user1053510
में भी RedHat RHEL 7.4, जेनकींस के लिए स्थित है 2.98 –
आप उबंटू सर्वर का उपयोग कर रहे हैं, तो पहले Monitoring प्लगइन स्थापित कितनी स्मृति जेनकींस उपयोग कर रहा है देखने के लिए। उदाहरण के लिए, इस मैं इसे स्थापित करने के बाद क्या देखा है:
फिर, आदेश 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
साथ जेनकींस को पुनः आरंभ और फिर, नौकरी कि स्मृति मुद्दों हो रही थी ट्रिगर करने के बाद, चीजों को ज्यादा बेहतर देखा और काम इस और बाद में रन पूरा कर सकता है:
मुझे लगता है कि आप सेकंड में भूल गया डैश, तो यह होना चाहिए: JAVA_ARGS = "- Xmx1048m -XX: MaxPermSize = 512m" –
धन्यवाद! मैंने लापता डैश जोड़ा है। –
एनपी, उत्तर के लिए धन्यवाद। –