docker常见问题排查处理
logstash 常见问题排查处理
·
一、查看容器退出码
docker inspect [container_id]
二、Exit Code分析
1、Exit Code 137
表明容器收到了 SIGKILL 信号,进程被杀掉,对应 kill -9
引发 SIGKILL 的是 Docker Kill。这可以由用户或由 Docker 守护程序来发起,手动执行:docker kill
137 比较常见,如果 pod 中的 limit 资源设置较小,会运行内存不足导致 OOMKilled,此时 state 中的 “OOMKilled” 值为 true,你可以在系统的 dmesg 中看到 oom 日志
查看容器的退出原因,OOMKilled 为 false,就需要通过查看系统 dmesg日志
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 137,
"Error": "",
"StartedAt": "2022-08-05T07:29:42.80888438Z",
"FinishedAt": "2023-02-22T13:33:14.947766595Z"
},
系统 dmesg日志显示,进程 2507446 由于 oom 问题导致被系统 kill。
[29574478.992648] Tasks state (memory values in pages):
[29574478.993122] [ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name
[29574479.009065] [1163669] 0 1163669 661458 0 1265664 134597 0 java
[29574479.010718] [2507446] 0 2507446 1320030 219064 4042752 219262 0 java
[29574479.021002] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=docker-88f33ee17166f44690de361c89f8bc6cd275dae85422304765e508eaedbf50e7.scope,mems_allowed=0,global_oom,task_memcg=/system.slice/docker-deb1361213732f53591cd31f637b850bfc67506db55aa7915a55243f9c49ef75.scope,task=java,pid=2507446,uid=0
[29574479.022546] Out of memory: Killed process 2507446 (java) total-vm:5280120kB, anon-rss:876256kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:3948kB oom_score_adj:0
参数含义
total-vm: total virtual memory. 进程使用的总的虚拟内存。
rss: resident set size. 驻留集大小。驻留集是指进程已装入内存的页面的集合。
anon-rss: anonymous rss. 匿名驻留集。比如malloc出来的就是匿名的。
file-rss: 映射到设备和文件上的内存页面。
shmem-rss: 大概是shared memory rss
由于任务异常已退出,可通过排除法确认是否为该任务的进程id
docker container top [container_id]
最终确认任务退出原因为 oom 导致,但是并不一定表示该任务存在异常,也有可能是操作系统内存不足时,会将内存使用较大的任务优先 kill。
解决办法:
服务器扩容,增加内存条。
减小任务的内存使用量。
-Xms256m
-Xmx512m
更多推荐
已为社区贡献4条内容
所有评论(0)