K8s 容器里 Java 不能使用所有的内存,只用了 4 分之一,求解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zealinux
V2EX    Java

K8s 容器里 Java 不能使用所有的内存,只用了 4 分之一,求解?

  •  
  •   zealinux 2020-12-31 11:25:46 +08:00 3566 次点击
    这是一个创建于 1747 天前的主题,其中的信息可能已经有所发展或是发生改变。

    k8s 里设置 pod limit 2Gi 但实际只用了 500M,就 Full GC 了。

    java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0) OpenJDK 64-Bit Serer VM (build 25.212-b04, mixed mode) 启动命令 java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dserver.port=18101 -Djava.security.egd=file:/dev/./urandom -jar /u/app/advert-api.jar --spring.profiles.active=prd 

    我加上了-XX:MaxRAMFraction=2还是一样只使用 500M

    10 条回复    2021-01-28 11:05:24 +08:00
    wysnylc
        1
    wysnylc  
       2020-12-31 11:39:02 +08:00
    jvm 加内存难道不是用-Xmx??????
    没有配才默认使用 1/4 内存
    tangweiwownb
        2
    tangweiwownb  
       2020-12-31 11:39:57 +08:00
    加上-Xms -Xmx 呀
    zealic
        3
    zealic  
       2020-12-31 11:39:58 +08:00
    -XX:MaxRAMPercentage=75.0
    WispZhan
        4
    WispZhan  
       2020-12-31 13:39:17 +08:00
    建议先学好 Java,再学 K8s 。
    WispZhan
        5
    WispZhan  
       2020-12-31 13:40:04 +08:00
    面试最常见的问题,Jvm 的内存构成是啥, 如何调整 JVM 内存参数。
    yplove156
        6
    yplove156  
       2020-12-31 14:00:02 +08:00
    遇到过一个类似的问题,你可以参考下,k8s 的 limit 限制在 jdk8 上有一定的缺陷,支持不是很好,有几种解决方式,升级 jdk 到 11,还有一种解决方式,limit 的限制大小在会在容器里面有个文件记录,具体位置忘了,可以百度下,在执行 java -jar 之前,先读取这个文件的内容,再把内容放到启动参数(最大内存参数)里面,就可以了
    v2orz
        7
    v2orz  
       2020-12-31 14:16:37 +08:00   2
    你这几个 jvm 参数大概率是百度->csdn 这样来的
    回楼上几位兄弟的回答,在容器里面设置 Xmx 和 Xms 是一个不太"恰当"的使用方式

    请参考以下:
    "JDK 10 之后引入了默认开启的参数 `UseContainerSupport` 同时这个特性也被 backport 到 JDK1.8 的 8u191 版本。也就是说 8u191 和更后面的 JDK 都可以通过开启 `UseContainerSupport` 来支持 cgroup 看到 cgroup 的内存限制,再结合 MaxRAMPercentage 来动态算一个堆内存上限就足够了,这个值具体看服务用到的堆外内存和线程的使用量,一般无脑给个 75/80 都没问题。"

    作者:李飘柔
    链接: https://www.zhihu.com/question/315793102/answer/1639340828
    来源:知乎
    rrzwxq
        8
    rrzwxq  
       2020-12-31 14:27:19 +08:00   4
    刚好看过这方面的资料,回答一下
    在 191 版本后,-XX:{Min|Max}RAMFraction 被弃用,引入了-XX:MaxRAMPercentage,其值介于 0.0 到 100.0 之间,默认值为 25.0,
    所以你设置的这个值没用-XX:MaxRAMFraction=2,可以尝试-XX:MaxRAMPercentage

    题外话:中文 IT 论坛里面,遇到别人提问的帖子时,经常遇到大量充满戾气的冷嘲热讽回答,这类人上来不是帮助别人解答问题,而是从提问者提问的角度吹毛求疵,指出提问者应该这样又或者是那样,先学学这个,先学学那个,又或是建议别人先百度或谷歌,话里行间透露出一种前辈的优越感,问一下你怎么知道别人没搜索过?

    我在英文论坛里面这样的行为见得不是很多,如果不愿意回答别人,觉得问题简单大可不必回答就好,为什么要用这种阴阳怪气得话来回答呢?这样有助于帮助解决什么问题吗?既然要别人先学习好这个,学好那个,那别人提这个问题不就是正是学习的过程吗?

    我觉得我们还是缺乏包容心,同理心,缺乏想要创造一个更好的社区的愿望
    YouLMAO
        9
    YouLMAO  
       2020-12-31 18:37:39 +08:00   1
    不是缺乏同理心, 而是野路子培训班几十万年薪出身的程序员太多了, 要是清华本科, MIT 博士会乱喷么, 直接打出标准答案
    mitsuizzz
        10
    mitsuizzz  
       2021-01-28 11:05:24 +08:00
    @rrzwxq 大佬我也想问一下,我 docker 容器启动时,给容器分配了 1g 的内存,内部启动命令没有指定-XX:MaxRAMPercentage,那应该是内存跑到 250MB 左右 会 OOM, 但现在显示 600 多会 OOM,我本地把 dump 拉下来分析了下,堆内存 700 多 MB,所以很不解,我该给这个容器分配多少内存才合适,还需要配置什么参数呢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5975 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 01:42 PVG 09:42 LAX 18:42 JFK 21:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86