加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

容器中的JVM资源该怎样被安详的限定?

发布时间:2019-01-18 06:22:10 所属栏目:站长百科 来源:运维猿
导读:媒介 Java与Docker的团结,固然更好的办理了application的封装题目。但也存在着不兼容,好比Java并不能自动的发明Docker配置的内存限定,CPU限定。 这将导致JVM不能不变处奇迹务!容器会杀死你JVM历程,而康健搜查又将拉起你的JVM历程,进而导致你监控你的po

openjdk9-openj9 (正确的辨认容器限定,3G)安详

  1. [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk9-openj9:alpine-slim java -XshowSettings:vm -version 
  2. VM settings: 
  3.  Max. Heap Size (Estimated): 3.00G 
  4.  Using VM: Eclipse OpenJ9 VM 
  5. openjdk version "9.0.4-adoptopenjdk" 
  6. OpenJDK Runtime Environment (build 9.0.4-adoptopenjdk+12) 
  7. Eclipse OpenJ9 VM (build openj9-0.9.0, JRE 9 Linux amd64-64-Bit Compressed References 20180814_248 (JIT enabled, AOT enabled) 
  8. OpenJ9 - 24e53631 
  9. OMR - fad6bf6e 
  10. JCL - feec4d2ae based on jdk-9.0.4+12) 

openjdk10-openj9 (正确的辨认容器限定,3G)安详

  1. [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk10-openj9:alpine-slim java -XshowSettings:vm -version 
  2. VM settings: 
  3.  Max. Heap Size (Estimated): 3.00G 
  4.  Using VM: Eclipse OpenJ9 VM 
  5. openjdk version "10.0.2-adoptopenjdk" 2018-07-17 
  6. OpenJDK Runtime Environment (build 10.0.2-adoptopenjdk+13) 
  7. Eclipse OpenJ9 VM (build openj9-0.9.0, JRE 10 Linux amd64-64-Bit Compressed References 20180813_102 (JIT enabled, AOT enabled) 
  8. OpenJ9 - 24e53631 
  9. OMR - fad6bf6e 
  10. JCL - 7db90eda56 based on jdk-10.0.2+13) 

openjdk11-openj9(正确的辨认容器限定,3G)安详

  1. [root@xiaoke-test ~]# docker run -m 4GB --rm adoptopenjdk/openjdk11-openj9:alpine-slim java -XshowSettings:vm -version 
  2. VM settings: 
  3.  Max. Heap Size (Estimated): 3.00G 
  4.  Using VM: Eclipse OpenJ9 VM 
  5. openjdk version "11.0.1" 2018-10-16 
  6. OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13) 
  7. Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.11.0, JRE 11 Linux amd64-64-Bit Compressed References 20181020_70 (JIT enabled, AOT enabled) 
  8. OpenJ9 - 090ff9dc 
  9. OMR - ea548a66 
  10. JCL - f62696f378 based on jdk-11.0.1+13) 

说明

说明之前我们先相识这么一个环境:

JavaMemory (MaxRAM) = 元数据+线程+代码缓存+OffHeap+Heap...

一样平常我们都只设置Heap纵然用-Xmx来指定JVM可行使的最大堆。而JVM默认会行使它获取到的最大内存的1/4作为堆的缘故起因也是云云。

安详性(即不会高出容器限定被容器kill)

OpenJdk

OpenJdk8-12,都能担保这个安详性的特点(8和9必要非凡参数,-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap)。

OpenJ9

2.IbmOpenJ9全部的版本都能辨认到容器限定。

资源操作率

OpenJdk

自动辨认到容器限定后,OpenJdk把最大堆配置为了或许容器内存的1/4,对内存的挥霍不行谓不大。

虽然可以共同另一个JVM参数来设置最大堆。-XX:MaxRAMFraction=int。下面是我清算的一个常见内存配置的表格, 从中我们可以看到好像JVM默认的最大堆的取值为MaxRAMFraction=4,跟着内存的增进,堆的闲置空间越来越大,在16G容器内存时,java堆只有不到4G。

  1. MaxRAMFraction取值 堆占比 容器内存=1G 容器内存=2G 容器内存=4G 容器内存=8G 容器内存=16G 
  2. 1 ≈90% 910.50M 1.78G 3.56G 7.11G 14.22G 
  3. 2 ≈50% 455.50M 910.50M 1.78G 3.56G 7.11G 
  4. 3 ≈33% 304.00M 608.00M 1.19G 2.37G 4.74G 
  5. 4 ≈25% 228.00M 455.50M 910.50M 1.78G 3.56G 

OpenJ9

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读