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

想知道 OOM killed 的是哪个 Java 的命令参数?

  •  
  •   zealinux · 2021-01-25 16:27:49 +08:00 · 1707 次点击
    这是一个创建于 1398 天前的主题,其中的信息可能已经有所发展或是发生改变。

    /var/log/messages

    oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice,task=java,pid=88959,uid=1000
    oom_reaper: reaped process 88959 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    

    只能看到 pid,而且是 java,但是不知道具体是那个 java,( vm 上好多个 java 进程的)

    7 条回复    2021-01-25 22:27:19 +08:00
    julyclyde
        1
    julyclyde  
       2021-01-25 16:59:34 +08:00
    这事你只能认倒霉

    下次最好放到 systemd 管理,然后 task_memcg 那里就会显示一个 slice 名字了
    lff0305
        2
    lff0305  
       2021-01-25 20:15:01 +08:00 via Android
    十多年以前,解决一个类似问题的方案是,从 java cp 多个副本,java1 java2 等等等等,然后修改启动脚本,用自己的 javan 来启动。被杀了就看从 Java n 反查出来哪个服务再看日志等等来分析
    qfdk
        3
    qfdk  
       2021-01-25 20:18:22 +08:00
    不是有个 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=文件路径 好像有个这个东西,炸了之后会有个 jvm dump
    matrix67
        4
    matrix67  
       2021-01-25 20:21:56 +08:00
    @lff0305 哈哈 黑科技(奇技淫巧)
    chenshun00
        5
    chenshun00  
       2021-01-25 20:32:09 +08:00
    @qfdk 你这个是 OOM,这种属于操作系统的 OOM Kill 是不行的,从虚拟机迁移到 K8s 特别多.. , 关键是自己的技术水平还解决不了它
    chendy
        6
    chendy  
       2021-01-25 21:07:48 +08:00
    @chenshun00 容器的话,起码能看到哪个容器被干了,k8s 的话也能帮忙自动重启,问题还好办一些
    qfdk
        7
    qfdk  
       2021-01-25 22:27:19 +08:00
    @chenshun00 这样的话可以考虑用 agent 了 弄个 elk 的 apm 看一下就是了。 里面也能知道 containerId 之类的。这样的东西感觉加内存应该可以处理,有时候内存太小里面出现的问题有点儿玄学。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.