线上服务502问题排查
问题背景
线上运营平台有两台2C4G的机器组成了集群,其中服务器A上同时还部署了PDF打印等服务,很明显4G内存吃紧,一直担心服务会出现问题,不过运行小半年时间也没遇到,就不再关心此事了。
有天值班时,运营人员反馈:运营平台抽风了,时好时坏,严重影响了他们的工作。
这事儿可不小,得赶紧排查修复啊!
排查过程
- 首先在自己的电脑上访问运营平台,正常,未复现,此时13:02了;
- 呼朋唤友,同事们也各自访问运营平台,5人中,只有老大的电脑访问时,页面显示502;
- 于是猜测线上两台机器中有一台出现了问题(具体问题还未知),Nginx没有将该机器剔除路由列表,有些ip的请求被路由到该机器上了;
- 分别查看两天机器的日志查看是什么问题导致请求失败,发现机器A的日志停留在12:00,其中没有任何相关的错误信息;
ps -ef|grep xxx
命令查看项目进程,发现进程已经消失;
解决方案
- 重启进程,恢复服务;
- 编写检测脚本,自动检测项目进程,如果进程消失则自动重启。
复盘总结
- 线上服务进程为什么会莫名其妙地消失?(见下方知识盘点)
- 反向代理服务器配置心跳检测(或健康检查)机制,自动剔除路由表中的非正常机器。
知识盘点
- Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉;
- O