Jenkins中的PermGen错误

时间:2012-06-21 11:54:13

标签: java tomcat ubuntu jenkins

我遇到了Jenkins失败的案例,除了Jenkins重新部署(Jenkins是Tomcat中的webapp)之外没有任何帮助。即使新的工作也因PermGen空间错误而失败,但所有设置都很好(所有这些-XX:PermSize参数都是可能的)。关键在于重新部署后,一切都像魅力一样。但这是一个苛刻的解决方案。我想知道,如果有一些选项可以回滚Jenkins状态。提前谢谢。

更新:好的,对于那些可能面临类似问题的人来说,这就是我想到的。那些写道,最好将Jenkins部署为Tomcat模块的人可能没有遇到任何类型项目部署的问题(使用Jenkins Deploy插件或在Maven的tomcat-maven-plugin中使用pom.xml。当我分别安装Jenkins时,我没有遇到任何问题。呼!

6 个答案:

答案 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)

我发现OrangePiJRE提出了帮助。默认情况下,Jenkins使用Java 8任务调用的主文件夹下的JRE

答案 5 :(得分:0)

我在Linux中通过添加${project_classpath}解决了PermGen错误:

jenkins.conf