2013-08-01 15 views
5

Środowisko: Linux/Windows7, Java 1.6.0.03/37 lub 1,7Jenkins - java.lang.OutOfMemoryError: PermGen przestrzeń -

Pobrałem jenkins.war i po wstępnej konfiguracji za pomocą następującego skryptu/polecenia, ja pobrano kilka wtyczek (10-15) i próbowałem ponownie uruchomić Jenkinsa, zadziałało. Potem mam trochę więcej wtyczek (łącznie 30-40) i albo wybrałem Instaluj lub pobierz + potem + zainstaluj, Jenkins nie podszedł.

tj. Za pomocą startJenkins.sh (tylko Linux). Uwaga: Na Windows7 Jenkins rozpoczął jako usługa Windows.

#!/bin/bash 
export JAVA_HOME=/production/jenkinsAKS/java/jdk1.6.0_03 
export JENKINS_HOME=/production/jenkinsAKS 
export PATH=${JAVA_HOME}/bin:${PATH} 
export JENKINS_HTTP_PORT=9040 
export JENKINS_AJP13_PORT=9949 
now=`date +%Y%m%d_%H%M%S` 

echo $0 begins ${now} 
echo " java-home=${JAVA_HOME}, jenkins-home=${JENKINS_HOME}, path=${PATH}" 
java -jar ${JENKINS_HOME}/lib/jenkins.war -XX:MaxPermSize=4096m --logfile=${JENKINS_HOME}/log/jenkins.log${now} --httpPort=${JENKINS_HTTP_PORT} --ajp13Port=${JENKINS_AJP13_PORT} & 

Początkowo nie używałem „-XX: MaxPermSize = 4096m” parametr, ale jak tylko zobaczyłam następujący komunikat o błędzie, próbowałem różnych wartości jak 128/512/1024,2048,4096m itp didn Pomóc z błędem.

INFO: Beginning extraction from war file 
Jenkins home directory: /production/jenkinsAKS found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 
Aug 1, 2013 1:17:15 PM winstone.Logger logInternal 
INFO: HTTP Listener started: port=9040 
Aug 1, 2013 1:17:15 PM winstone.Logger logInternal 
INFO: AJP13 Listener started: port=9949 
Aug 1, 2013 1:17:15 PM winstone.Logger logInternal 
INFO: Winstone Servlet Engine v0.9.10 running: controlPort=disabled 
Aug 1, 2013 1:17:16 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Started initialization 
Aug 1, 2013 1:17:16 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Listed all plugins 
Aug 1, 2013 1:17:16 PM hudson.plugins.ansicolor.PluginImpl start 
INFO: AnsiColor: eliminating boring output (https://github.com/dblock/jenkins-ansicolor-plugin) 
Aug 1, 2013 1:17:16 PM org.jvnet.hudson.plugins.backup.BackupPluginImpl loadConfiguration 
INFO: Loading configuration... 
Aug 1, 2013 1:17:16 PM org.jvnet.hudson.plugins.backup.utils.BackupPersistence loadConfig 
INFO: Config file not found. 
Aug 1, 2013 1:17:18 PM ruby.RubyRuntimePlugin start 
INFO: Injecting JRuby into XStream 
Trying to load models from /production/jenkinsAKS/plugins/pathignore/WEB-INF/classes/models 
Loading /production/jenkinsAKS/plugins/pathignore/WEB-INF/classes/models/pathignore_wrapper.rb 
Aug 1, 2013 1:17:26 PM hudson.plugins.greenballs.PluginImpl start 
INFO: Green Balls! 
Aug 1, 2013 1:17:26 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Prepared all plugins 
Aug 1, 2013 1:17:32 PM hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error 
WARNING: Failed to instantiate optional component org.jfrog.hudson.ivy.ArtifactoryIvyConfigurator$DescriptorImpl; skipping 
Aug 1, 2013 1:17:32 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Started all plugins 
Aug 1, 2013 1:17:32 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Augmented all extensions 
Aug 1, 2013 1:17:32 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Loaded all jobs 
Aug 1, 2013 1:17:32 PM hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness queueChangeSet 
INFO: Queue of changeset  A hudson.model.UpdateCenter.xml 
aborted (scm manipulator not settled !) 
Aug 1, 2013 1:17:32 PM org.jenkinsci.main.modules.sshd.SSHD start 
INFO: Started SSHD at port 36227 
Aug 1, 2013 1:17:32 PM jenkins.InitReactorRunner$1 onAttained 
INFO: Completed initialization 
Aug 1, 2013 1:17:32 PM hudson.TcpSlaveAgentListener <init> 
INFO: JNLP slave agent listener started on TCP port 46056 
The following triggers are available for your jobs 
[Trigger] - Build periodically 
[Trigger] - Build when another project is promoted 
[Trigger] - Maven Dependency Update Trigger 
[Trigger] - Poll SCM 
[Trigger] - [BuildResultTrigger] - Monitor build results of other jobs 
[Trigger] - [FSTrigger] - Monitor files 
[Trigger] - [FSTrigger] - Monitor folder 
[Trigger] - [IvyTrigger] - Poll with an Ivy script 
[Trigger] - [ScriptTrigger] - Poll with a Groovy script 
[Trigger] - [ScriptTrigger] - Poll with a shell or batch script 
[Trigger] - [URLTrigger] - Poll with a URL 
Aug 1, 2013 1:17:33 PM hudson.WebAppMain$2 run 
INFO: Jenkins is fully up and running 
Exception in thread "Jenkins cron thread" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "JmDNS(sagrdev3sb12.local.).State.Timer" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "ConnectorThread:[http-9040]" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "JmDNS(sagrdev3sb12.local.).Timer" java.lang.OutOfMemoryError: PermGen space 
Exception in thread "WinstoneHostConfigurationMgmt:default" java.lang.OutOfMemoryError: PermGen space 

lub czasami widzę:

30 Aug 1, 2013 1:50:29 AM jenkins.InitReactorRunner$1 onAttained 
    31 INFO: Prepared all plugins 
    32 Exception in thread "pool-2-thread-20" java.lang.OutOfMemoryError: PermGen space 
    33 Aug 1, 2013 1:51:10 AM winstone.Logger logInternal 
    34 WARNING: Untrapped Error in Servlet 
    35 java.lang.OutOfMemoryError: PermGen space 
    36 Aug 1, 2013 1:51:12 AM winstone.Logger logInternal 
    37 SEVERE: Error in the error servlet 
    38 java.lang.OutOfMemoryError: PermGen space 
    39 Exception in thread "Jenkins cron thread" java.lang.OutOfMemoryError: PermGen space 
-bash-3.2$ 

Jak mogę rozwiązać ten problem? Ten sam problem pojawił się, gdy wykonałem to samo ćwiczenie na moim komputerze z systemem Windows. Czy muszę używać mniej lub ograniczonej liczby wtyczek?

Dzięki

+1

Użyłem minimalnej liczby wtyczek, teraz działa.ale wątpię, skoro tylko pobiorę więcej w dół, ten problem z permgenem znowu pojawi się na pewno. –

+0

Czy kiedykolwiek zastanawiałeś się, które wtyczki lub po ilu wtyczkach wystąpił błąd PermGenu? – Illidanek

Odpowiedz

9

W moim pliku ~/.bash_profile, mam ustawione następujące 3 zmienne. Zauważ, że istnieją inne zmienne, w tym pliku, jak również tj JAVA_HOME, ANT_HOME, SONAR_HOME, SONAR_RUNNER_HOME itp:

export JAVA_OPTS="-XX:MaxPermSize=512m -Xms512m -Xmx1024m" 
export GRADLE_OPTS="-XX:MaxPermSize=512m" 
export SONAR_RUNNER_OPTS="-Xmx512m -XX:MaxPermSize=512m" 

Wszystkie - pracuje teraz.

Pierwsza linia eksportowa: sprawi, że Jenkins będzie działał bez błędu PermGen, druga linia sprawi, że Gradle będzie działał, gdy Jenkins wywoła skrypt Gradle (za pomocą innego skryptu wrapper dla np. .sh/etc), trzeci wiersz sprawia, że ​​"sonar- "Polecenie runner" do poprawnego działania (w przeciwnym razie wystąpił błąd dla PermGen po linii "Initialize Hibernate" ... podczas wyprowadzania polecenia sonar-runner). Komendę sonar-runner uruchamiasz w obszarze roboczym, w którym skompilowałeś java, raporty związane z narzędziami analizy kodu statycznego (pmd/checkstyle/findbugs) i innymi raportami o pokryciu kodu (jacoco/cobertura). Obszar roboczy powinien mieć plik "sonar-project.properties". Poszukaj stron pomocy SonarQube na temat tego pliku i wszystkich zmiennych zawartych w projekcie.

Wszystkie te opcje są udokumentowane tutaj: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html lub tutaj, jeśli używasz Java 7: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

0

Jeśli używasz Gradle, można ustawić -Xmx lub -XX: MaxPermSize dodając GRADLE_OPTS globalna zmienna środowiskowa w globalnej konfiguracji Jenkinsa. Aby to zrobić, kliknij Zarządzaj Jenkinsem, a następnie Konfiguruj system. W sekcji Właściwości ogólne, kliknij pole wyboru zmiennych, a następnie dodać nową zmienną środowiskową o nazwie GRADLE_OPTS o wartości odpowiednio ustawione jak poniżej:

name: GRADLE_OPTS value: -Xmx1024m -XX:MaxPermSize=1024m

gdzie 1024 jest pamięć określona. Możesz to zmienić zgodnie ze swoim wymaganiem.

Podobna konfiguracja jest wymagana w przypadku Maven. Proszę zobaczyć poniższy link, aby uzyskać więcej informacji: https://wiki.jenkins-ci.org/display/JENKINS/Builds+failing+with+OutOfMemoryErrors

Powiązane problemy