Jenkins iş listemde bellek yetersiz çalışıyor ve bu sayede java.lang.OutOfMemoryError
ileti veriliyor. Ancak Jenkins'i yüklemek için Ubuntu Paket Yöneticisi, aptitude
veya apt-get
'u kullandım ve Jenkins'e ayrılan yığın alanı miktarını değiştirmek için nereye bakacağımı bilmiyorum.Ubuntu'da daemon olarak çalışırken Jenkins'e nasıl daha fazla yığın alanı verebilirim?
cevap
bir Jenkins işi çalıştırır sırasında karşılaşabileceğiniz OutOfMemoryError
iletilerin iki tipi vardır:
java.lang.OutOfMemoryError: Heap space
- bu ihtiyaç Jenkins ayrılan yığın alanı miktarını artırmak anlamına gelir zaman Daemon başlar .java.lang.OutOfMemoryError: PermGen space
- Bu, Java nesne meta verilerini depolamak için ayrılmış üretim alanı miktarını artırmanız gerektiği anlamına gelir. değerini artırma-Xmx
parametresinin değerinin bu hata üzerinde hiçbir etkisi olmayacaktır. Ubuntu 12.04 LTS On
, /etc/default/jenkins
hattı on üzerine JAVA_ARGS
ayar satırları:
- , daha Java yığın boşluk eklemek
-Xmx
Java parametrenin değerini arttırmak. Bu, bellek ayırma havuzunun maksimum boyutunu ayarlar (toplanan çöp yığını). - daha fazlasını isterseniz. Daimi nesil yığın kullanıcı sınıfları hakkında meta bilgileri tutan
XX:MaxPermSize=512m
(başka bir şeyle512
yerine parametre eklemek, daha PermGen alanı ekleyin. Örneğin
, bu özü varsayılan dan /etc/default/jenkins
taze Jenkins yükledikten sonra:
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
01:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
Bu 1 GB olması yığın alanı ayarlarsanız nasıl olacağı konusunda ise
Yığın büyüklüğünü çok büyük ayarlamamaya dikkat edin; çünkü ne ayırırsanız veriniz işletim sistemi ve diğer programlar için kullanılabilir bellek miktarını azaltır, bu da aşırı disk belleği neden olabilir (bellek RAM ve takas disk arasında ileri ve geri, sisteminizi yavaşlatacak). Ayrıca MaxPermSpace
ayarlarsanız
, sen parametreler arasında bir boşluk) eklemeniz gerekir: Değişiklik yapıldıktan sonra
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
Jenkins web arayüzünden incelikle Jenkins yeniden başlatın veya komut hemen bir yeniden başlatma zorlamak sudo /etc/init.d/jenkins restart
ile çizgi.
Aşağıdaki siteyi, Java maksimum ve kalıcı oluşturma yığın boyutlarını anlamak için yararlı buldum: http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html.
CentOS için, Jenkins.xml dizini varsayılan olarak/etc/sysconfig/jenkins-1.579-1 dizinindedir.Ubuntu Server kullanıyorsanız 1
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
Şerefe, neredeyse – bmaher
bulmaya çalışırken çılgına dönüyordum ** openSUSE Leap ** 42.1 (x86_64) üzerinde Jenkins yapılandırması 2.70 sürümü için /Hill/sysconfig/jenkins – user1053510
da RedHat RHEL 7.4, jenkins 2.98 –
, ilk Jenkins kullanarak ne kadar bellek görmek için Monitoring eklentiyi yükleyin. Örneğin, bu onu yükledikten sonra gördüğümüz şudur:
Ardından komuta free -m
, ben sunucunun bellek boyutu ne anladım. Benim durumumda, 16Gb. bu bilgi ile, ben /etc/default/jenkins
açtı ve değişti:
JAVA_ARGS="-Djava.awt.headless=true"
8384 8Gb olan
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
sudo service jenkins restart
ile Jenkins yeniden ve daha sonra, bellek sorunlarını başlamıştı işi tetikleyen sonra, işler çok daha iyi görünüyordu ve iş bu ve sonraki koşulara tamamlayamadı: Sana saniye unuttum düşünüyorum
tire, bu yüzden olmalıdır: JAVA_ARGS = "- Xmx1048m -XX: MaxPermSize = 512m" –
Teşekkür ederim! Eksik çizgiyi ekledim. –
np, cevabınız için teşekkürler. –