zoukankan      html  css  js  c++  java
  • jvm感知docker容器参数

      docker中的jvm检测到的是宿主机的内存信息,它无法感知容器的资源上限,这样可能会导致意外的情况。

      -m参数用于限制容器使用内存的大小,超过大小时会被OOMKilled。

      -Xmx:  默认为物理内存的1/4。

      4核CPU16G内存的宿主机

      java 7

    docker run -m 1G -it openjdk:7u181
    java -XX:+PrintFlagsFinal -version | grep MaxHeapSize # 结果是 16G / 4 = 4G

      java 8

    docker run -m 1G -it adoptopenjdk/openjdk8:latest
    java -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -version | grep MaxHeapSize # 结果是 1G / 4 = 256M

      java 9

    docker run -m 1G -it adoptopenjdk/openjdk9:latest
    java -XX:+PrintFlagsFinal -version | grep MaxHeapSize # 结果是 16G / 4 = 4G
    java -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -version | grep MaxHeapSize # 结果是 1G / 4 = 256M

      java 10

    docker run -m 1G -it adoptopenjdk/openjdk10:latest # 给1G
    jshell -v # 启动jshell
    java -XX:+PrintFlagsFinal -version | grep MaxHeapSize  # 结果是 1G / 4 = 256M

      java5/6/7/8u131-:务必设置内存选项Xmx。

      java 8u131+和java 9+ -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap。

      java 8u191+ UseContainerSupport默认开启,backported;java 9暂未backport这个feature。

      java10+的UseContainerSupport默认开启。

      Xmx的值可设置为镜像上限减去150m或200m,根据具体业务考虑。因为栈内存等是不包含在堆内存中的。

      cat /sys/fs/cgroup/memory/memory.limit_in_bytes查看容器设置的最大内存。

      docker update -m 1024m test动态修改内存大小后,最好重启容器。

      cpu和内存一样,java10之前的版本感知到的是物理机上的资源。

      4CPU16G内存

      java 6/7/8/9

    docker run --cpus 1 -m 1G -it adoptopenjdk/openjdk9:latest # 给1核
    
    jshell -J-Xmx512M -v # 启动jshell
    
    Runtime.getRuntime().availableProcessors() # 结果是不是1!!!

      java 10

    docker run --cpus 1 -m 1G -it adoptopenjdk/openjdk10:latest # 给1核
    
    jshell -J-Xmx512M -v # 启动jshell
    
    Runtime.getRuntime().availableProcessors() # 结果是1

      java 10之前:手动设置jvm相关的选项,如:

    • ParallelGCThreads
    • ConcGCThreads
    • G1ConcRefinementThreads
    • CICompilerCount / CICompilerCountPerCPU

      java 10+:

    • UseContainerSupport, 默认开启
  • 相关阅读:
    Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
    Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍
    Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
    Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相
    小程序缓存二开(带有效时间)
    小程序笔记五:页面数据传递
    小程序笔记四:表单提交form
    小程序笔记三:幻灯片swiper 和图片自定义高度
    小程序笔记二:部署
    小程序笔记一:基础设置
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/9863609.html
Copyright © 2011-2022 走看看