2013-02-07 11 views

cevap

57

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 şeyle 512 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.

+1

tire, bu yüzden olmalıdır: JAVA_ARGS = "- Xmx1048m -XX: MaxPermSize = 512m" –

+0

Teşekkür ederim! Eksik çizgiyi ekledim. –

+0

np, cevabınız için teşekkürler. –

21

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="

+3

Şerefe, neredeyse – bmaher

+0

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

+0

da RedHat RHEL 7.4, jenkins 2.98 –

1

, 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:

enter image description here

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"

için. Sonra komutu 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

enter image description here