จะเพิ่มพื้นที่กองให้กับ Jenkins ได้อย่างไรเมื่อเริ่มเป็นบริการภายใต้ Windows


116

ฉันต้องการเพิ่มพื้นที่ฮีปที่มีให้สำหรับเจนกินส์ แต่เนื่องจากมีการติดตั้งเป็นบริการฉันไม่รู้ว่าจะต้องทำอย่างไร


คำตอบ:


90

ในไดเร็กทอรีการติดตั้ง Jenkins ของคุณมี jenkins.xml ซึ่งคุณสามารถตั้งค่าตัวเลือกต่างๆได้ เพิ่มพารามิเตอร์ -Xmx ด้วยขนาดที่คุณต้องการให้กับแท็กอาร์กิวเมนต์ (หรือเพิ่มขนาดหากมีอยู่แล้ว)



คำถามของฉันคือ: ถ้าบิวด์ใช้หน่วยความจำหมดทำไมเราควรตั้งค่าตัวเลือก java ในต้นแบบ
yarin

1
คุณไม่ควร แต่คำถามนี้ไม่ได้เกี่ยวกับการสร้างหน่วยความจำจนหมดมันเกี่ยวกับหน่วยความจำที่มาสเตอร์หมด
dunni

สำหรับ Ubuntu 16.04.6 LTS ไม่มีไฟล์ดังกล่าว /etc/default/jenkinsวิธีการแก้ปัญหาที่นำเสนอด้านล่างโดยสตีฟเป็นหนึ่งที่ทำงานสำหรับฉัน
insideClaw

110

หากคุณใช้ Aptitude (apt-get) เพื่อติดตั้ง Jenkins บน Ubuntu 12.04 ให้ยกเลิกการใส่เครื่องหมายJAVA_ARGSในบรรทัดแรกสุดของ/etc/default/jenkins:

# arguments to pass to java
#JAVA_ARGS="-Xmx256m"   # <--default value
JAVA_ARGS="-Xmx2048m"
#JAVA_ARGS="-Djava.net.preferIPv4Stack=true" # make jenkins listen on IPv4 address

3
ถ้าเป็น windows ล่ะ?
Dejell

6
คำถามระบุเฉพาะ Windows
Nick Udell

6
ใช่ฉันเขียนคำตอบนี้ก่อนที่ฉันจะรู้ว่าฉันกำลังทำอะไรกับ SO และฉันประหลาดใจที่มีการโหวตเพิ่มขึ้นมากมาย บางทีเช่นเดียวกับฉันผู้คนจำนวนมากค้นพบคำถามนี้ผ่านทางเครื่องมือค้นหาและคนจำนวนมากที่ใช้ Linux หรือ Unix? ฉันไม่เข้าใจมัน
Steve HHH

8
"บางทีเช่นเดียวกับฉันผู้คนจำนวนมากหาทางตอบคำถามนี้ผ่านเครื่องมือค้นหาและคนจำนวนมากที่ใช้ Linux หรือ Unix ฉันไม่เข้าใจ" นั่นคือสิ่งที่ฉันพบ
Scott

1
อย่าลืมรีสตาร์ทบริการเจนกินส์sudo service jenkins stop sudo service jenkins start
Camilo Silva

74

คุณต้องแก้ไขไฟล์jenkins.xml คุณต้องเปลี่ยนโดยเฉพาะ

   <arguments>-Xrs -Xmx256m 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

ถึง

    <arguments>-Xrs -Xmx2048m -XX:MaxPermSize=512m 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

คุณยังสามารถตรวจสอบตัวเลือก Java ที่ Jenkins ใช้อยู่ได้โดยติดตั้งปลั๊กอินตรวจสอบ Jenkinsผ่านManage Jenkins / Manage Pluginsจากนั้นไปที่การจัดการ Jenkins / Monitoring of Hudson / Jenkins masterเพื่อใช้การตรวจสอบเพื่อกำหนดจำนวนหน่วยความจำที่ Jenkins ใช้ได้

หากคุณได้รับข้อผิดพลาดหน่วยความจำไม่เพียงพอเมื่อ Jenkins โทรหา Maven อาจจำเป็นต้องตั้งค่า MAVEN_OPTS ผ่านManage Jenkins / Configure Systemเช่นหากคุณใช้ Java เวอร์ชันก่อน JDK 1.8 (ค่าเป็นคำแนะนำ):

-Xmx2048m  -XX:MaxPermSize=512m

หากคุณใช้ JDK 1.8:

-Xmx2048m

เมื่อฉันลองตั้งค่า JENKINS_JAVA_OPTIONS ตามที่อธิบายไว้ข้างต้นฉันได้รับ: "การเริ่มใช้งานตัวเลือกที่ไม่รู้จัก Jenkins: --XX: MaxPermSize = 512m"
nemoo

2
ควรมีเพียงยัติภังค์เดียว: -XX:MaxPermSize=512m- มีการแก้ไขคำตอบด้านบนเพื่อแก้ไขการพิมพ์ผิดนี้
Adam Rofer

1
มีความคิดอย่างไรในการตั้งค่า JENKINS_JAVA_OPTIONS ใน Windows
ATOzTOA

บน Windows อ้างอิงจากjenkins.361315.n4.nabble.com/…คุณใช้ Control Panel -> System -> Advanced -> Environment Variables
Mark Butler

1
-XX:MaxPermSizeไม่ได้ใช้กับ Java 8 หรือสูงกว่าstackoverflow.com/questions/12114174/what-does-xxmaxpermsize-do
Micha Wiedenmann

24

ฉันได้เพิ่มไปที่/ etc / sysconfig / jenkins (CentOS):

# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m"

สำหรับอูบุนตูการกำหนดค่าเดียวกันควรอยู่ใน/ etc / default


16

จาก Jenkins wiki:

พารามิเตอร์การเรียกใช้ JVM ของบริการ Windows เหล่านี้ถูกควบคุมโดยไฟล์ XML jenkins.xml และ jenkins-slave.xml ตามลำดับ ไฟล์เหล่านี้สามารถพบได้ใน $ JENKINS_HOME และในไดเร็กทอรี root ของทาสตามลำดับหลังจากที่คุณติดตั้งเป็นบริการของ Windows

รูปแบบไฟล์ควรอธิบายได้เอง ปรับแต่งอาร์กิวเมนต์เพื่อให้ JVM มีหน่วยความจำที่ใหญ่ขึ้น

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service


-1

หากคุณใช้เทมเพลต Jenkinsคุณสามารถกำหนดการตั้งค่า VM เพิ่มเติมได้และอาจขัดแย้งกับการตั้งค่า VM ของระบบของคุณ

ตัวอย่างเช่น tempalate ของคุณอาจมีการอ้างอิงเช่นนี้

 <mavenOpts>-Xms512m -Xmx1024m -Xss1024k -XX:MaxPermSize=1024m -Dmaven.test.failure.ignore=false</mavenOpts> 

ตรวจสอบให้แน่ใจว่าได้จัดแนวรายการเทมเพลตเหล่านี้ให้ตรงกับการตั้งค่า VM ของระบบของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.