在quarkus jib构建docker容器中更改GC

问题描述 投票:0回答:1

如何使用 jib 作为构建引擎来更改 quarkus docker 镜像中的默认 GC?

我尝试过 application.yaml 中的设置,但出现重复的 gc 定义错误,因为使用以下参数将参数写入 JAVA_OPTS env 变量

quarkus.jib.jvm-additional-arguments: -XX:+UseZGC,-XX:+ZGenerational

docker 中的 jvm 命令已经有了这个,默认情况下使用 JIB 就存在

java -XX:MaxRAMPercentage=80.0 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -Djava.util.logging.manager=org.jboss.logmanager.LogManager -cp . -jar /home/jboss/quarkus-run.jar
    
garbage-collection quarkus jib
1个回答
0
投票

您看到这种行为的原因是因为

quarkus-container-image-jib
使用的默认基础映像是
registry.access.redhat.com/ubi8/openjdk...
,它使用 this 脚本来确定 JVM 启动参数。

您可以查看此处以查看您可以设置的影响脚本的所有选项。 影响GC使用的环境变量是

GC_CONTAINER_OPTIONS
,所以你需要做的第一件事是:

quarkus.jib.environment-variables.GC_CONTAINER_OPTIONS=-XX:+UseZGC

如果您还想使用Generational ZGC,您还需要配置

quarkus.jib.jvm-additional-arguments=-XX:+ZGenerational

使用两种不同的语法肯定很笨拙,所以我打开了this问题来改善这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.