【发布时间】:2015-11-06 02:43:09
【问题描述】:
我有一个 Jenkins 构建,构建的一个步骤是调用 bat 文件的 Windows 批处理命令步骤。
批处理文件包含以下创建 JVM 的命令
SET JAVA_OPTS=-Xmx4g -Xms512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m
call sbt %cmd% "run %db% %dbuser% %dbpass% %df% %dfport% %dfuser% %dfpass% %epsg% %starttime%"
如果我像上面那样使用 -Xmx4g,则命令在 Jenkins 中失败,并带有
Invalid maximum heap size: -Xmx4g The specified size exceeds the maximum representable size.
但是,如果我在命令提示符下在从属计算机上在 Jenkins 之外运行相同的批处理文件,则完全没有问题。
如果我在 Jenkins 下使用 -Xmx2g 运行命令,则内存不足,因为该命令的堆大小太小,但至少它在没有无效最大堆大小的情况下运行。
如何防止 Jenkins 在此构建步骤中限制正在运行的 JVM?
我尝试了以下方法,但尚未找到允许此构建步骤完成的解决方案:
- 更改 Jenkins 服务器上的堆大小(尽管它不是有问题的服务器端 JVM)
- 更改分配给运行构建的从站的堆大小(使用 Jenkins 服务器中节点配置页面上的 JVM 选项)
还有其他建议吗?
【问题讨论】:
-
我假设当你成功运行批处理文件时,它是在运行 Jenkins 的同一台机器上?
-
是的,批处理文件在从机上的 Jenkins 外部运行时成功运行。
-
你能验证在这些情况下运行的是同一个 JVM 吗? (听起来失败的案例是启动 32 位 JVM)
标签: java scala jenkins jvm heap-size