情况
- 请求某个服务的时候报错,去容器上查看,发现子进程被kill了。
- 之前好几次出现这个情况,基本上都是top看一下内存占用,只是简单的把容器扩容。
排查方法
- 先使用top看一下内存占用,然后请求服务,发现4个G占满了。
- 再使用dmesg命令来查看内核信息进行排错。发现的确是oom。
dmesg命令详解(转载)
- dmesg是用来在Unix-like系统中显示内核的相关信息的。dmesg全称是display message (or display driver),即显示信息。实际上,dmesg命令是从内核环形缓冲区中获取数据的。当我们在Linux上排除故障时,dmesg命令会十分方便,它能很好地帮我们鉴别硬件相关的error和warning。除此之外,dmesg命令还能打印出守护进程相关的信息,已帮助我们debug。
- dmesg -L可以显示颜色,方便查看。
- dmesg -T可以显示时间戳。