项目场景:
- 使用2核4G的服务器搭建了基于docker的若干服务
问题描述:
- 首先说现象,整个服务崩溃无法访问
- 进入服务器后使用
docker ps命令无响应
原因分析:
在线上经历来讲,我遇到过两次这个现象,分别在不同的项目中,排除与代码层面的问题,毫无疑问,这个问题是致命的,一旦发生,整个服务瘫痪,我记不清第一次出现这个问题是什么原因造成的了。所以下面说的问题定位方法仅供参考
- 毫无疑问,重启服务器是能够解决的,但这是下下策,我们需要找到问题根源。
- 查看磁盘使用情况,
df -h - 查看端口占用情况,确保是否是
docker崩溃使用netstat -ntpl - 内存是否充足,使用
free -m或者top查看,(我估计这次事故就是此原因造成的,但我无法论证,因为我修改内核参数min_free_kbytes时,服务器居然重启了)
解决方案:
- 为了避免这种问题的发生,我们在部署docker时,肯定就要做到服务的抗重启后自动启动。这是服务恢复的重要环节
- 现在我估计是内存不足造成的。如果为了节约硬件成本,不想提升内存,那么我们就得优化Linux内存管理
Linux内存管理优化
总结
其实看完这么多也没啥实质性的方案解决,仅仅是给一个处理思路,需要在意的因素。
本文描述了一次基于Docker的服务整体崩溃案例,并分享了故障排查思路。从服务器资源监控角度出发,通过检查磁盘使用率、端口占用及内存状态等手段定位问题原因。文章最后给出了解决方案并探讨了如何优化Linux内存管理来预防类似问题。
728

被折叠的 条评论
为什么被折叠?



