Jenkins - 由于 Java 堆 space 导致构建失败
JenkinsX - Build fail due to Java Heap space
我正在使用 JenkinsX 为 GKE 上的 Spring 引导应用程序创建 CI/CD 管道。一旦我将代码推送到 master 分支,就会触发构建,但由于 Java 堆 space.
不足,构建失败
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception: Java heap space -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.needNewBuffer (ByteArrayOutputStream.java:153)
at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.write (ByteArrayOutputStream.java:192)
为了解决我尝试将 Docekrfile 中的 JVM 参数设置为
CMD ["java", "-Xmx1024m","-jar", "app.jar"]
但是没有用。这是构建开始时我看到的
+ mvn -e clean deploy -Pprod
Picked up _JAVA_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx192m
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
有什么办法可以自己设置这个堆选项吗?
看起来 Maven 运行 内存不足,因此您的构建 pod 需要更多内存(而不是您的应用程序的 Dockerfile)。
作为快速测试,您可以在 Jenkins UI 中编辑 pod 模板:jx console
然后 Manage Jenkins -> Configure System
然后在 [=28] 中找到 jenkins-maven
pod 模板=] 并从此值编辑 _JAVA_OPTIONS
环境变量:https://github.com/jenkins-x/jenkins-x-platform/blob/master/jenkins-x-platform/values.yaml#L907 - 尝试将 -Xmx512m
更改为更大的值,例如 -Xmx912m
一旦找到适用于您的项目的值,您可以通过将此添加到您的 myvalues.yaml
来使更改永久重启 Jenkins - 像这样...
# myvalues.yaml
jenkins:
Agent:
PodTemplates:
Maven:
Name: maven
Label: jenkins-maven
EnvVars:
_JAVA_OPTIONS: '-XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx912m'
上的文档
我正在使用 JenkinsX 为 GKE 上的 Spring 引导应用程序创建 CI/CD 管道。一旦我将代码推送到 master 分支,就会触发构建,但由于 Java 堆 space.
不足,构建失败[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception: Java heap space -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.needNewBuffer (ByteArrayOutputStream.java:153)
at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.write (ByteArrayOutputStream.java:192)
为了解决我尝试将 Docekrfile 中的 JVM 参数设置为
CMD ["java", "-Xmx1024m","-jar", "app.jar"]
但是没有用。这是构建开始时我看到的
+ mvn -e clean deploy -Pprod
Picked up _JAVA_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx192m
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
有什么办法可以自己设置这个堆选项吗?
看起来 Maven 运行 内存不足,因此您的构建 pod 需要更多内存(而不是您的应用程序的 Dockerfile)。
作为快速测试,您可以在 Jenkins UI 中编辑 pod 模板:jx console
然后 Manage Jenkins -> Configure System
然后在 [=28] 中找到 jenkins-maven
pod 模板=] 并从此值编辑 _JAVA_OPTIONS
环境变量:https://github.com/jenkins-x/jenkins-x-platform/blob/master/jenkins-x-platform/values.yaml#L907 - 尝试将 -Xmx512m
更改为更大的值,例如 -Xmx912m
一旦找到适用于您的项目的值,您可以通过将此添加到您的 myvalues.yaml
来使更改永久重启 Jenkins - 像这样...
# myvalues.yaml
jenkins:
Agent:
PodTemplates:
Maven:
Name: maven
Label: jenkins-maven
EnvVars:
_JAVA_OPTIONS: '-XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx912m'
上的文档