V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hui9000
V2EX  ›  Kubernetes

请教关于 k8 OOM 的问题

  •  
  •   hui9000 · 337 天前 · 1549 次点击
    这是一个创建于 337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    部署的 java 程序,有个服务会时不时的 OOM ,想要 dump ,增加了启动参数。 请问各位大佬,我怎么取出 dump ,需要 yml 怎么配置,实际生产应该怎么搞给点建议,谢谢;

    9 条回复    2023-04-26 10:38:55 +08:00
    cheng6563
        1
    cheng6563  
       337 天前
    dump 那么大一坨,你得挂载个卷才行了。
    Frankcox
        3
    Frankcox  
       337 天前
    如果就是要取出 dump ,可以 kubectl exec 进入容器执行 dump 命令,生成 dump 文件后 kubectl cp 出来到本地查看问题。
    至于实际生产,这个应该要看你们公司的规范,这个我就不清楚了。
    RRyo
        4
    RRyo  
       337 天前
    挂个卷到
    /opt/jvm/dump/
    然后启动参数加
    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/jvm/dump/heapdump.hprof
    崩了之后卷里的东西不会丢,直接 kubectl cp 取,如果是挂的 nfs 之类的,直接从 nfs 取
    Sum0l
        5
    Sum0l  
       337 天前
    1\2\4 楼结合起来
    另外 java 程序可以设置 XX:MaxRAMPercentage 参数,提高 ram 的利用率
    hui9000
        6
    hui9000  
    OP
       337 天前
    @cheng6563 @wqsfree @Frankcox @RRyo
    感恩大家
    cmai
        7
    cmai  
       337 天前
    老问题了,我也提过相同的问题,你要考虑几个问题
    1.当你的程序 OOM 的时候,POD 是不是也内存满了,你需要在你 POD 保活的前提下再去 dump ,不然还没 dump 完,pod 就被重启了

    2.当你使用挂载卷的形式的时候,如果你有多个 java 程序,他们的 dump 文件是不是会互相覆盖呢?
    Vraw5
        8
    Vraw5  
       337 天前
    要是没那么正规,node 节点你也能登录进去。可以直接 dump ,然后去 pod 对应的 node 上面,找到 pod 的磁盘目录,把 dump 拿过来
    90xchun
        9
    90xchun  
       337 天前 via iPhone
    建议你可以每个一段时间 dump 一次,其实不用真的 OOM 的时候再想着 dump 得。dump 文件如果是越来越大直接扔给开发看就可以了,如果是某个请求导致的,会复杂一些,可以加入 gclog 分析对应时间的请求。也可以尝试在测试环境使用更小的内存得,以不影响实际的产品环境得
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4486 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:08 · PVG 18:08 · LAX 03:08 · JFK 06:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.