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

2021-01-25 16:27:49 +08:00
 zealinux

/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 进程的)

1703 次点击
所在节点    Java
7 条回复
julyclyde
2021-01-25 16:59:34 +08:00
这事你只能认倒霉

下次最好放到 systemd 管理,然后 task_memcg 那里就会显示一个 slice 名字了
lff0305
2021-01-25 20:15:01 +08:00
十多年以前,解决一个类似问题的方案是,从 java cp 多个副本,java1 java2 等等等等,然后修改启动脚本,用自己的 javan 来启动。被杀了就看从 Java n 反查出来哪个服务再看日志等等来分析
qfdk
2021-01-25 20:18:22 +08:00
不是有个 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=文件路径 好像有个这个东西,炸了之后会有个 jvm dump
matrix67
2021-01-25 20:21:56 +08:00
@lff0305 哈哈 黑科技(奇技淫巧)
chenshun00
2021-01-25 20:32:09 +08:00
@qfdk 你这个是 OOM,这种属于操作系统的 OOM Kill 是不行的,从虚拟机迁移到 K8s 特别多.. , 关键是自己的技术水平还解决不了它
chendy
2021-01-25 21:07:48 +08:00
@chenshun00 容器的话,起码能看到哪个容器被干了,k8s 的话也能帮忙自动重启,问题还好办一些
qfdk
2021-01-25 22:27:19 +08:00
@chenshun00 这样的话可以考虑用 agent 了 弄个 elk 的 apm 看一下就是了。 里面也能知道 containerId 之类的。这样的东西感觉加内存应该可以处理,有时候内存太小里面出现的问题有点儿玄学。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX