3

我开始在这件事上束手无策了。

我让 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 插件的“参数”表单字段中向这个特定的构建步骤添加参数以及将 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 gigs 的 RAM,我的意思是正如你在上面看到的那样,我将堆空间从 256 之类的更小的东西提高了,并且没有 PermGen 调整以使用 2gigs 和256M 的 PermGen!它不应该抱怨资源限制!)

请帮忙!

4

1 回答 1

5

好吧,对于那些偶然发现这个问题的人,我有一个解决方案。

windows 中的 JAVA_OPTS 似乎是一个很难设置和保持设置的野兽,但是使用 Jenkins 中的 EnvInject 插件,我能够使用以下内容: https ://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin

在新添加的“构建环境”步骤下,

选中标有“将环境变量注入构建过程”的框

并将其添加到“属性内容”文本框中:

JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=256m

没有报价!

正如我之前所说,我之前通过将系统范围的 JAVA_OPTS 变量设置为 windows 来解决这个问题(这对于我们服务器的需求来说太过分了),所以可能有不止几种方法可以在这里完成工作。

希望这对其他沮丧的 Windows/Jenkins/Grails 用户有所帮助!

于 2012-06-18T21:17:44.130 回答