簡體   English   中英

詹金斯中的永久代空間問題

[英]PermGen Space issue in Jenkins

我正在構建一個 maven 項目,因為過去 1.5 年的構建工作正常,但現在我遇到了 PermGen 空間錯誤。

[ERROR] Internal error: java.lang.RuntimeException: org.jfrog.build.extractor.maven.BuildInfoRecorder.sessionEnded() listener has failed: java.io.IOException: Remote call on channel failed: PermGen space -> [Help 1]
[ERROR] org.jfrog.build.extractor.maven.BuildInfoRecorder.sessionEnded() listener has failed:
java.lang.OutOfMemoryError: PermGen space

我嘗試了以下選項以解決它:-

1) 在Manage Jenkins 下,然后Configure System 全局屬性部分,添加名為 MAVEN_OPTS 的環境變量,其值設置為-Xmx200m -XX:MaxPermSize=512m

2) 在job configuration 下,然后Build ,在MAVEN_OPTS 中,添加以下屬性:-

-DXms512m
-DXmx1024m
-DXX:PermSize=512m
-DXX:MaxPermSize=1024m
-DXX:+CMSClassUnloadingEnabled
-DXX:+UseConcMarkSweepGC

仍然發生錯誤。

注意:-錯誤不是永久性的,它在幾次構建后消失,但再次開始出現,然后在多次重試后再次消失。

謝謝。

也許我錯了,但是當 Jenkins 嘗試將構建信息發送到 Artifactory(使用后期操作)時,您的內存錯誤似乎發生了。

您最近是否升級了 Jenkins Artifactory 插件?

您可以嘗試禁用“捕獲並發布構建信息”選項嗎?

在此處輸入圖片說明

最后一個選項,您能否嘗試更新 JENKINS_JAVA_OPTIONS(在 jenkins 服務配置文件中)以增加 MaxPermSize?

## Type: string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms2G -Xmx4G -XX:MaxPermSize=256m"

由於 Maven 項目不是節點上的構建步驟中部署工件,而是在master上部署工件,我懷疑 Permgen 問題可以通過升級 Jenkins 核心、插件或通過增加 Jenkins 啟動選項中的 Permgen 最大大小來解決。

附: Java 8 淘汰了 Permgen。

也許我瞎了,你寫在某個地方,但是當我遇到類似的問題時,我將 Jenkins 本身的 JRE 版本從 7 升級到 8。當我使用 Jenkins 2.X 和 Java 7 時,問題就開始了。

此致,

最大限度

在 centos6 上通過 rpm 或 yum 安裝 jenkins

vim /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM