[英]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空間中不必要地維護的類引起的。
我發現將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.