一次服务器宕机的排查记录

服务器宕机的排查记录

生产环境凌晨突然宕机,日志报错数据库链接超时
cpu、内存 磁盘 飙升

系统采用了springcloud 架构,通过阿里云的监控对比,发现仅仅一台服务器的宕机
分析日志发现,宕机的机器,凌晨接发大量请求,10分钟后宕机

初步怀疑负载均衡失效,进一步分析,流量集中在inner 接口,应该是FeignClient 请求
同时日志中出现sql 批量操作,进一步确定是Eurake 负载失效或者项目内部代码逻辑问题。

排查定时任务,确定逻辑,凌晨的定时任务在派发卡券的时候使用了多线程导致服务器宕机,

派发卡券是运营模块发起,定时任务通过HTTP直链触发,形成了一个节点正常,一个节点宕机的情况。

代码逻辑中使用了多线程,并且频繁操作数据库,导致了程序运行一段时间之后,整个运营模块宕机。

排查难点:宕机时,服务器日志丢失,MySQL数据库 链接不足导致服务器宕机,而导致链接不足的逻辑代码较难定位。
定时任务设计不合理,批量处理程序设计不合理。

生产环境中 往往没有直接登录服务器权限,一般思路从代码逻辑入手,毕竟MySQL Linux 或者spring cloud 都是经过时间检验的,服务器宕机更有可能是自己写的代码逻辑有问题。

一次服务器宕机的排查记录_第1张图片

你可能感兴趣的:(Java)