我有詹金斯失败的案例,除了詹金斯的重新部署(詹金斯是Tomcat的一个网络应用程序)之外,什么都没有。即使是新作业也因PermGen空间错误而失败,但所有设置都很好(所有这些-XX:PermSize参数都是可能的)。关键是在重新部署之后,一切都像魅力一样运作。但这是个严酷的解决方案。我想知道,是否有一些选项可以回滚Jenkins状态。提前谢谢。
Update:好吧,对于那些可能会面临类似情况的人来说,下面是我想出来的。那些认为最好将Jenkins部署为Tomcat模块的人可能不会遇到任何类型的项目部署的问题(使用Jenkins部署插件或使用Maven的pom.xml中的pom.xml)。在单独安装Jenkins时,我没有描述过的任何问题。呼!
发布于 2012-06-21 13:57:41
对PermGen空间错误真正重要的一个设置是(而且必须是这样的):
-XX:MaxPermSize=512mOne dash,2大Xs,Big- m,Big-P,Big-S,no-空格,size-in-megs,小写m。如果你搞砸了,就会忽略它。在我所看到的所有PermGen修复中,99%的“不工作”是因为有人没有精确地遵循指令,使用大M来代替小M,或者在前面放两个破折号而不是一个。
另外,512米只是一个起点.调整以适应您的系统。
发布于 2012-06-21 12:49:10
我曾经经历过类似的错误: jenkins正在执行maven构建,其中包括了强制测试的执行。我发现我使用的maven版本(V2之类的东西)并没有将我的JVM内存选项传递给万无一失的进程分叉,因此有些测试失败了。MAVEN_OPTS,JAVA_OPTS,都没有工作。
最后,我在settings.xml中直接传递我的内存选项,PermGen错误消失了。
下面是我使用的选项(应用程序相当大):
-Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m
发布于 2012-06-21 13:44:18
完全未经测试的建议,但this answer建议在启动Tomcat时使用-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled (尽管在完全不同的上下文中存在问题)。然而,This answer表明CMSPermGenSweepingEnabled在Java6上是不必要的,为了使CMSClassUnloadingEnabled有效,必须使用-XX:+UseConcMarkSweepGC。
至少,假设底层问题是由Tomcat实例在-XX:+CMSClassUnloadingEnabled空间中不必要地维护的类造成的,那么-XX:+CMSClassUnloadingEnabled就可以做到这一点。
https://stackoverflow.com/questions/11137578
复制相似问题