• 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, 默认开启
  • 相关阅读:
    WPF学员管理系统
    dotnet-千星项目OpenAuthNet基于NetCore21的快速开发框架
    MVC5仓库管理系统
    华为设备IPC V200R002C0SPC SDK连接demo
    基础界面
    交通建设项目管理信息化系统
    Apache常见interview
    mamcached+(magent+keepalived高可用)搭建及理论概述
    TCP/IP三次挥手,四次断开(精简)
    简述FTP的主动模式与被动模式(精简)
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/9863609.html
Copyright © 2020-2023  润新知