k8s中java动态内存配置
内存配置建议
条件限制: 本示例中使用Java8 , Java8的版本需要大于等于8u191,小于8u191请设置xms,xmx
JVM最大堆 = 容器limit内存* 1/2
JVM最大堆 * 125% <= 容器request
参数介绍
Java 8u191
以上版本使用-XX:MaxRAMPercentage
、-XX:MinRAMPercentage
两个参数. -XX:MaxRAMPercentage
是堆栈最大使用宿主内存的参数, 接受的值为浮点型. 即如果最大堆栈大小为容器limit的1/2,则设置为-XX:MaxRAMPercentage=50.0
首先查看,已经启动的JRE
容器的resources
. 如下所示:
1 | kubectl get pods example-58667fc45-jbrjs -o yaml |
接着exec到容器中, 查看容器默认占用内存的容量.
1 | kubectl exec -it example-58667fc45-jbrjs -- sh |
设置堆栈的最大大小为容器内存limit的1/2, 如下所示:
1 | java -XX:MaxRAMPercentage=50.0 -XshowSettings:vm -version |
Max. Heap Size (Estimated): 3.56G
可以看到最大内存,已经是容器的1/2了.
-XX:MinRAMPercentage
则是最小堆栈大小, 不再赘述.