【发布时间】:2012-06-18 00:04:59
【问题描述】:
我开始在这件事上束手无策了。
我让 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 插件的“参数”表单字段中向此特定构建步骤添加参数以及向 tomcat servlet 容器添加 java 参数(通常互联网推荐的 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!它不应该抱怨资源限制!)
请帮忙!
【问题讨论】:
-
查看 StackOverflow 问题编号 1393486 - 与 Grails 不严格相关,但它提供了有关此错误的见解。
-
感谢凯莉的回复!虽然我已经看到了这个问题:/这并不是我不理解错误或它的一般解决方案是什么(增加堆/permgen,关闭 GCOverheadLimit),我只是无法为我的生活弄清楚在詹金斯我需要设置它的地方,所以它实际上需要
-
好的,我明白了。我并不是很喜欢 Jenkins,而是专注于 Tomcat 方面。您可以在 Jenkins 之外执行此操作吗?例如创建 CATALINA_OPTS 环境变量?
CATALINA_OPTS="-Xmx2048m -Xss256k...'供 Tomcat 使用?