我遇到了Jenkins失败的案例,除了Jenkins重新部署(Jenkins是Tomcat中的webapp)之外没有任何帮助。即使新的工作也因PermGen空间错误而失败,但所有设置都很好(所有这些-XX:PermSize
参数都是可能的)。关键在于重新部署后,一切都像魅力一样。但这是一个苛刻的解决方案。我想知道,如果有一些选项可以回滚Jenkins状态。提前谢谢。
更新:好的,对于那些可能面临类似问题的人来说,这就是我想到的。那些写道,最好将Jenkins部署为Tomcat模块的人可能没有遇到任何类型项目部署的问题(使用Jenkins Deploy插件或在Maven的tomcat-maven-plugin
中使用pom.xml
。当我分别安装Jenkins时,我没有遇到任何问题。呼!
答案 0 :(得分:34)
对于PermGen空间错误真正重要的一个设置是(并且必须是完全):
-XX:MaxPermSize=512m
一个短划线,两个 Big Xs,Big-M,Big-P,Big-S,无空格,大小ingg,更低案例 m。如果搞砸了,它将被忽略。在所有PermGen修复程序的99%中,我发现“不工作”是因为有人没有精确地遵循指令而使用Big-M代替兆字节,或者在前面放两个破折号而不是一个破折号示例
此外,512 megs只是一个起点...调整以适合您的系统。
答案 1 :(得分:6)
我曾经遇到类似的错误:jenkins正在执行maven构建,其中包括surefire测试执行。我发现我正在使用的maven版本(V2某些东西)没有将我的JVM内存选项传递给surefire进程fork,并且由于这个原因,一些测试失败了。 MAVEN_OPTS,JAVA_OPTS,没有人工作。
我最终直接在settings.xml中传递了我的内存选项,并且PermGen错误消失了。
以下是我使用的选项(应用程序相当大):
-Xms512m -Xmx1024m -XX:PermSize = 512m -XX:MaxPermSize = 1024m
答案 2 :(得分:4)
完全未经测试的建议,但this answer建议在启动Tomcat时使用-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
(虽然在完全不同的上下文中存在问题)。但是,This answer表明在Java 6上不需要CMSPermGenSweepingEnabled
,-XX:+UseConcMarkSweepGC
必须使用CMSClassUnloadingEnabled
才能生效。
至少-XX:+CMSClassUnloadingEnabled
假设底层问题是由Tomcat实例的PermGen空间中不必要地维护的类引起的。{/ p>
答案 3 :(得分:1)
也许这个问题可以帮到你:
How to give Jenkins more heap space when it´s started as a service under Windows?
那里有一些非常好的答案。
答案 4 :(得分:0)
我发现OrangePi
向JRE
提出了帮助。默认情况下,Jenkins使用Java 8
任务调用的主文件夹下的JRE
答案 5 :(得分:0)
我在Linux中通过添加${project_classpath}
解决了PermGen
错误:
jenkins.conf