在了解了可以传递给 Java 8 虚拟机以使其具有容器感知能力的参数(即 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap)后,我尝试将这些参数添加到我的 Kubernetes 部署中以用于 Spring Boot 服务.
在我的部署 YAML 文件的容器部分,我有以下内容:
资源:
要求:
内存:“256Mi”
中央处理器:“50m”
限制:
内存:“512Mi”
中央处理器:“200m”
环境:
- 名称:JVM_OPTS
值:“-Xms256M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1”
在我的 Dockerfile 中,我有:
ENV JVM_OPTS="-Xmx256M"
ENV JVM_ARGS="-Dspring.profiles.active=kubernetes"
曝光 8080
入口点 [ "sh", "-c", "java $JVM_ARGS $JVM_OPTS -jar testservice.jar"]
我似乎无法弄清楚为什么最大堆大小没有正确调整大小:
$ kubectl exec test-service-deployment-79c9d4bd54-trxgj -c test-service -- java -XshowSettings:vm -version'
虚拟机设置:
最大限度。堆大小(估计):875.00M
人体工学机器类:服务器
使用 VM:OpenJDK 64 位服务器 VM
openjdk 版本“1.8.0_171”
OpenJDK 运行时环境 (IcedTea 3.8.0) (Alpine 8.171.11-r0)
OpenJDK 64 位服务器 VM(构建 25.171-b11,混合模式)
我在这里做错了什么?
在本地 Docker 安装中,我可以看到 JVM 最大堆设置正确:
$ docker run openjdk:8-jre-alpine java -Xms256M -Xmx512M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XshowSettings:vm -version
虚拟机设置:
最小。堆大小:256.00M
最大限度。堆大小:512.00M
人体工学机器类:服务器
使用 VM:OpenJDK 64 位服务器 VM
openjdk 版本“1.8.0_171”
OpenJDK 运行时环境 (IcedTea 3.8.0) (Alpine 8.171.11-r0)
OpenJDK 64 位服务器 VM(构建 25.171-b11,混合模式)
繁花如伊
墨色风雨
相关分类