Kubernetes JVM 默认参数验证

Kubernetes JVM 默认参数验证

结论:

  • 默认最大、最小堆内存,最大年轻代内存的设置(Xmx/MaxHeapSize,Xms/InitialHeapSize,Xmn/MaxNewSize)只和Limit配置有关
  • 最小堆内存的默认值为Limit的 (1/64)
  • 最大堆内存的默认值为Limit的 (1/2)

一、设置了Xmx Xms Xmn参数的情况

[root@testsophon-v1-6cffc57fc6-lkhf7 java]# jps
83 Jps
27 jar
[root@testsophon-v1-6cffc57fc6-lkhf7 java]# jinfo -flags 27
Attaching to process ID 27, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08

Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=2516582400 -XX:MaxHeapSize=2516582400 -XX:MaxNewSize=1048576000 -XX:MaxRAMFraction=2 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=1048576000 -XX:OldSize=1468006400 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:ThreadStack
Size=1024 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps

Command line:  -javaagent:/javaagent/jmx_prometheus_javaagent.jar=5555:/javaagent/config.yaml -Xmx2400M -Xms2400M -Xmn1000M -Xss1024k -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dfile.encoding=UTF-8 -DappName=java-demo -DenvType=a1 -DenvLevel=test

[root@testsophon-v1-6cffc57fc6-lkhf7 java]#

参数设置:-Xmx2400M -Xms2400M -Xmn1000M
实际效果:
-XX:InitialHeapSize=2516582400(2400M)
-XX:MaxHeapSize=2516582400(2400M)
-XX:MaxNewSize=1048576000(1000M)
Pod内存配置:(Limit为4G、Request为1G)

二、未设置Xmx Xms Xmn参数的情况

session is close[root@testsophon-v1-bc67458-shkj6 java]# jps
103 Jps
26 jar
[root@testsophon-v1-bc67458-shkj6 java]# jinfo -flags 26
Attaching to process ID 26, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08

Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=67108864 -XX:MaxHeapSize=2147483648 -XX:MaxNewSize=715784192 -XX:MaxRAMFraction=2 -XX:MinHeapDeltaByt
es=196608 -XX:NewSize=22347776 -XX:OldSize=44761088 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UnlockExperimenta
lVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps

Command line:  -javaagent:/javaagent/jmx_prometheus_javaagent.jar=5555:/javaagent/config.yaml -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApp
licationStoppedTime -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dfile.encoding=UTF-8 -DappName=java-demo -DenvType=a1 -De
nvLevel=test
[root@testsophon-v1-bc67458-shkj6 java]#

默认配置参数为:
-XX:InitialHeapSize=67108864 : 默认最小堆内存为64M
-XX:MaxHeapSize=2147483648 : 默认最大堆内存为2048M
-XX:MaxNewSize=715784192 : 默认最大年轻堆内存为682.625M
POD内存配置:(Limit为4G、Request为1G)

三、调整Pod内存配置

1、POD内存配置调整为(Request为1G Limit为1G)

[root@testsophon-v1-7748d8dc84-gjsqp java]# jinfo -flags 26
Attaching to process ID 26, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=16777216 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178913280 -XX:MaxRAMFraction=2 -XX:MinHeapDeltaByte
s=196608 -XX:NewSize=5570560 -XX:OldSize=11206656 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UnlockExperimentalV
MOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps
Command line:  -javaagent:/javaagent/jmx_prometheus_javaagent.jar=5555:/javaagent/config.yaml -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApp
licationStoppedTime -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dfile.encoding=UTF-8 -DappName=java-demo -DenvType=a1 -De
nvLevel=test
[root@testsophon-v1-7748d8dc84-gjsqp java]#

实际效果:
-XX:InitialHeapSize=16777216 (16M)
-XX:MaxHeapSize=536870912(512M)
-XX:MaxNewSize=178913280 (170.625M)

2、POD内存配置调整为(Request为256M,Limit为1G)

W
[root@testsophon-v1-657b4b574f-5nbx9 java]# jps
82 Jps
26 jar
[root@testsophon-v1-657b4b574f-5nbx9 java]# jinfo -flags 26
Attaching to process ID 26, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=16777216 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178913280 -XX:MaxRAMFraction=2 -XX:MinHeapDeltaByte
s=196608 -XX:NewSize=5570560 -XX:OldSize=11206656 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UnlockExperimentalV
MOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps
Command line:  -javaagent:/javaagent/jmx_prometheus_javaagent.jar=5555:/javaagent/config.yaml -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApp
licationStoppedTime -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dfile.encoding=UTF-8 -DappName=java-demo -DenvType=a1 -De
nvLevel=test
[root@testsophon-v1-657b4b574f-5nbx9 java]#

实际效果:
-XX:InitialHeapSize=16777216 (16M)
-XX:MaxHeapSize=536870912(512M)
-XX:MaxNewSize=178913280 (170.625M)

说明JVM参数的默认值只和Limit相关

3、POD内存配置调整为(Request为256M,Limit为8G)

[root@testsophon-v1-77848b8bd9-p8ws4 java]# jinfo -flags 47
Attaching to process ID 47, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=134217728 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431633920 -XX:MaxRAMFraction=2 -XX:MinHeapDeltaB
ytes=196608 -XX:NewSize=44695552 -XX:OldSize=89522176 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UnlockExperimen
talVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps
Command line:  -javaagent:/javaagent/jmx_prometheus_javaagent.jar=5555:/javaagent/config.yaml -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApp
licationStoppedTime -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dfile.encoding=UTF-8 -DappName=java-demo -DenvType=a1 -De
nvLevel=test
[root@testsophon-v1-77848b8bd9-p8ws4 java]#

实际效果:
-XX:InitialHeapSize=134217728(128M)
-XX:MaxHeapSize=4294967296(4096M)
-XX:MaxNewSize=1431633920(1365.3125M)

4、结论

根据以上1、2、3实验,可得出一下结论:

  • 说明默认最大、最小堆内存,最大年轻代内存的设置(Xmx/MaxHeapSize,Xms/InitialHeapSize,Xmn/MaxNewSize)只和Limit配置有关
  • 最小堆内存的默认值为Limit的 (1/64)
  • 最大堆内存的默认值为Limit的 (1/2)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值