2013-08-01 28 views
5

Môi trường: Linux/Windows7, Java 1.6.0.03/37 hoặc 1,7Jenkins - java.lang.OutOfMemoryError: PermGen không gian -

tôi tải jenkins.war và sau khi thiết lập ban đầu bằng cách sử dụng kịch bản sau đây/lệnh, tôi tải xuống một số plugin (10-15) và cố gắng khởi động lại Jenkins, nó hoạt động. Sau đó, tôi có thêm một số bổ sung (30-40 trong tổng số) và hoặc là tôi đã chọn Cài đặt hoặc tải xuống + sau đó + cài đặt, Jenkins đã không đưa ra.

tức là sử dụng startJenkins.sh (chỉ dành cho Linux). Lưu ý: Trên Windows7, Jenkins bắt đầu như một dịch vụ 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} & 

Ban đầu tôi không sử dụng "-XX: MaxPermSize = 4096m" tham số nhưng ngay sau khi tôi nhìn thấy thông báo lỗi sau, tôi đã cố gắng giá trị khác nhau như 128/512/1024,2048,4096m vv, didn không giúp với lỗi.

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 

hoặc đôi khi tôi thấy:

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$ 

Làm thế nào tôi có thể giải quyết vấn đề này? Vấn đề tương tự xuất hiện khi tôi thực hiện cùng một bài tập trên máy tính để bàn Windows của mình. Tôi có cần sử dụng số lượng plugin giới hạn hoặc ít hơn không?

Cảm ơn

+1

Tôi đã sử dụng tối thiểu # plugin, hiện đang hoạt động.nhưng tôi nghi ngờ ngay sau khi tôi tải xuống nhiều hơn xuống đường, vấn đề không gian permGen này sẽ trở lại chắc chắn –

+0

Bạn đã bao giờ tìm ra trình cắm nào hoặc sau khi có bao nhiêu plugin mà lỗi PermGen bắt đầu xảy ra? – Illidanek

Trả lời

9

Trong tệp ~/.bash_profile, tôi đã đặt 3 biến sau đây. Lưu ý có những biến số khác trong tập tin này cũng ví dụ: JAVA_HOME, ANT_HOME, SONAR_HOME, SONAR_RUNNER_HOME, vv:

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

Tất cả - làm việc bây giờ.

Dòng xuất đầu tiên: sẽ nhận được Jenkins mà không có lỗi PermGen, dòng thứ hai sẽ làm Gradle đi khi Jenkins gọi Gradle script (thông qua một kịch bản bao bọc khác cho ví dụ .sh/etc), dòng thứ ba tạo "sonar- Á hậu "lệnh để làm việc tốt (nếu không, tôi đã nhận được một lỗi cho PermGen sau khi" Initialize Hibernate "... dòng trong sản lượng của lệnh sonar-runner). Bạn chạy lệnh sonar-runner trong không gian làm việc nơi bạn đã biên dịch java, các báo cáo liên quan đến các công cụ phân tích mã tĩnh (pmd/checkstyle/findbugs) và các báo cáo bảo hiểm mã khác (jacoco/cobertura). Không gian làm việc phải có tệp "sonar-project.properties". Tìm các trang trợ giúp SonarQube về tệp này và tất cả các biến nó chứa cho một dự án.

Tất cả những tùy chọn được ghi nhận ở đây: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html hoặc ở đây nếu bạn đang sử dụng Java 7: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

0

NẾU bạn đang sử dụng Gradle, Bạn có thể thiết lập các -Xmx hoặc -XX: MaxPermSize bằng cách thêm một GRADLE_OPTS biến môi trường toàn cục trong cấu hình toàn cục của Jenkins. Để thực hiện việc này, hãy nhấp vào Quản lý Jenkins, rồi Định cấu hình Hệ thống. Trong phần thuộc tính toàn cầu, nhấp vào hộp kiểm Environment Variables, sau đó thêm một biến môi trường mới gọi là GRADLE_OPTS với giá trị đặt phù hợp như sau:

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

nơi 1024 là bộ nhớ xác định. Bạn có thể thay đổi nó theo yêu cầu của bạn.

Cấu hình tương tự là cần thiết cho Maven. Vui lòng xem liên kết bên dưới để biết thêm chi tiết: https://wiki.jenkins-ci.org/display/JENKINS/Builds+failing+with+OutOfMemoryErrors

Các vấn đề liên quan