我开始在这个问题上结束我的智慧。
我让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插件的“parameters”表单字段中为这个特定的构建步骤添加参数,以及将java参数添加到tomcat servlet容器中(通常是互联网推荐的java选择此GC开销)错误)。这是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
有没有人有任何想法/建议?我觉得我已经尝试了所有的东西来给这份工作足够的记忆(盒子有12演出的RAM,我的意思是你可以看到上面我把堆积空间从256更小的东西上升,没有PermGen调整使用2gig和256M的PermGen!它不应该抱怨资源限制!)
请帮忙!
答案 0 :(得分:5)
好吧,对于那些偶然发现这个问题的人,我有一个解决方案。
Windows中的JAVA_OPTS似乎是设置和保持设置的棘手野兽,但是使用Jenkins中的EnvInject插件,我能够使用以下内容: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin在新添加的“构建环境”步骤中,
选中标记为“将环境变量注入构建过程”的框
并将其添加到“属性内容”文本框中:
JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=256m
没有引用!
正如我之前所说,我以前通过在Windows中设置一个系统范围的JAVA_OPTS变量来解决这个问题(这对我们服务器的需求来说太过分了),所以可能有多种方法可以获得这个工作在这里完成。
希望这对其他受挫的Windows / Jenkins / Grails用户有帮助!