我开始在这一个机智的结尾。
我有Jenkins运行在Windows Server 2008 RC 2框上的tomcat容器内。 我们在这里有一个大的Grails项目,在这里有几个依赖的内部插件(类似于其中的10个)。 部分过程是运行
grails compile
在项目上(使用jenkins中的Grails插件,Grails版本1.3.7)
工作开始很好,但在这个步骤炸弹与以下错误:
[groovyc] Compiling 103 source files to D:\jenkins\jobs\my-build-job\workspace\my-application\target\classes Compilation error: java.lang.OutOfMemoryError: GC overhead limit exceeded
我在Grails插件的“参数”表单字段中为这个特定的构build步骤添加参数,以及将java参数添加到tomcat servlet容器(对于此GC开销错误通常是因特网推荐的java opts)中是不成功的。 以下是servlet的wrapper.conf的一部分:
wrapper.java.additional.8=-Xmx2048m wrapper.java.additional.9=-Xss256k wrapper.java.additional.10=-Xms1024m wrapper.java.additional.11=-XX:+UseParallelGC wrapper.java.additional.12=-XX:-UseGCOverheadLimit wrapper.java.additional.13=-XX:MaxPermSize=256m
有没有人有任何想法/build议? 我觉得我已经尽了一切努力给这个工作足够的记忆(这个盒子里有12个RAM,我的意思是你可以看到上面的例子,我把堆空间从256更小,没有PermGen调整,使用2gigs和PermGen的256M!它不应该抱怨资源限制!)
请帮忙!
那么,对于那些偶然发现这个问题的人,我有一个解决方案。
在Windows中的JAVA_OPTS似乎是一个棘手的野兽来设置和保持设置,但使用Jenkins的EnvInject插件,我能够使用以下: https ://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
在新增的“Build Environment”步骤下,
选中标有“将环境变量注入到构建过程”
并将其添加到“属性内容”文本框中:
JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=256m
没有任何报价!
正如我之前所说的,我之前通过设置一个系统范围的JAVA_OPTS变量来解决这个问题(这对我们的服务器来说太过分了),所以可能有很多方法可以完成这个任务。
希望这证明对其他沮丧的Windows / Jenkins / Grails用户有帮助!