运维记录--K8S中java程序频繁死掉killed

2022-11-21 21:12:52 浏览数 (1)

上周上线完之后,平台频繁出现问题,从服务器查看pod状态为Running 但是从日志中查看就是直接被killed 检查过nginx日志、数据库等未发现异常

由上图可以看出最后直接就是被killed

下意识的我会以为是程序运行超过了所指定的Xmx参数,但是平台运行的情况我还是了解的,之前即便访问量大的是的也是个别服务或者数据库压力大,不会导致这两天无规律性质的死掉服务,几乎什么服务都可能会进行被killed 我尝试调整过启动脚本Xmx参数 但是没用,一样还是会被killed

之前也处理过关于pod启动异常的问题,然后我去检查各个节点运行资源情况:

代码语言:javascript复制
free -h   #查看运行内存
df -h    #查看磁盘空间
top     #查看CPU

并未发现异常

这里插句话如果磁盘空间超过85%,会导致docker启动回收垃圾机制,删除你的镜像一类的,会导致你的pod启动异常 运行内存不足也会导致pod启动异常

无异常,就更令我感到诧异并无助 解决问题最怕的就是没发现问题

然后先经过治理表面先及时解决平台运行问题

代码语言:javascript复制
kubectl delete pod XXX

经过重启pod,然后重新运行没问题的,不过过一会指不定又是什么服务进行killed了

经过一个周末,还是不断有问题发生,我决定周一上班必须解决掉!

早上进行观察经常出问题的服务都是在两个节点node05、node07

上节点在进行检查资源----无异常

然后查看docker日志------报错了!!!!

可以看到从22号就开始频繁发生报错,时间节点对应上了!!! 先了解一下报错内容,它因为过多的连接等才会进行导致不断的kill容器 我们查看一下docker的各项资源 查看无用的镜像、无用的容器卷、无用的容器多不多

代码语言:javascript复制
docker images
docker volume ls
docker ps -a

清理命令 原理:删除你无用的资源

代码语言:javascript复制
docker images prune  #这个命令还是慎重因为怕你有的镜像有用
可以使用自己组合一键清理你指定的镜像
docker volume prune  #清理无用的容器卷

经过我的排查就是因为docker无用资源过多导致的触发机制进行不断删除容器 进行清理!!!

docker日志无异常

在返回查看pod服务 不会再被进行killed了

平台也恢复正常!

有的问题并不是简单的看表面,可能需要深入去分析

0 人点赞