簡體   English   中英

Jenkins中的PermGen錯誤

[英]PermGen errors in Jenkins

我有詹金斯失敗的案例,除了Jenkins重新部署(Jenkins是Tomcat中的webapp)幫助。 即使新的作業因PermGen空間錯誤而失敗,但所有設置都很好(所有這些-XX:PermSize參數在任何地方都是可能的)。 關鍵在於重新部署后,一切都像魅力一樣。 但這是一個苛刻的解決方案。 我想知道,如果有一些選項可以回滾Jenkins狀態。 提前致謝。

更新 :好的,對於那些可能面臨類似問題的人來說,這就是我想到的。 那些寫道,最好將Jenkins部署為Tomcat模塊的人可能沒有遇到任何類型項目部署的問題(使用Jenkins Deploy插件或在Maven的pom.xml使用tomcat-maven-plugin )。 當我分別安裝Jenkins時,我沒有遇到任何問題。 呼!

在一個設置,真正重要的PermGen space的錯誤,是(而且必須是這個完全一致 ):

-XX:MaxPermSize=512m

一個短划線, 兩個 Big X,Big-M,Big-P,Big-S,無空間,尺寸在megs, 小寫 m。 如果搞砸了,它將被忽略。 在所有PermGen修復程序的99%中,我發現“不工作”是因為有人沒有精確地遵循指令而使用Big-M代替兆字節,或者在前面放兩個破折號而不是一個破折號例。

此外,512兆只是一個起點...調整適合您的系統。

我曾經遇到類似的錯誤:jenkins正在執行maven構建,其中包括surefire測試執行。 我發現我正在使用的maven版本(V2某些東西)沒有將我的JVM內存選項傳遞給surefire進程fork,並且由於這個原因,一些測試失敗了。 MAVEN_OPTS,JAVA_OPTS,沒有人工作。

我最終直接在settings.xml中傳遞了我的內存選項,並且PermGen錯誤消失了。

以下是我使用的選項(應用程序相當大):

-Xms512m -Xmx1024m -XX:PermSize = 512m -XX:MaxPermSize = 1024m

完全未經測試的建議,但這個答案建議在啟動Tomcat時使用-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled (盡管在完全不同的上下文中存在問題)。 但是, 這個答案表明在Java 6上不需要CMSPermGenSweepingEnabled ,而且-XX:+UseConcMarkSweepGC必須使用CMSClassUnloadingEnabled才能使CMSClassUnloadingEnabled生效。

至少-XX:+CMSClassUnloadingEnabled可以做到這一點,假設底層問題是由Tomcat實例的PermGen空間中不必要地維護的類引起的。

也許這個問題可以幫助你:

如何在Windows下作為服務啟動時為Jenkins提供更多堆空間?

那里有一些非常好的答案。

我發現將JRE推向Java 8有所幫助。 默認情況下,Jenkins使用jenkins.xml任務調用的主文件夾下的JRE

我通過添加到jenkins.conf解決了Linux中的PermGen錯誤:

wrapper.java.additional.4=-XX:PermSize=1024M

暫無
暫無

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

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