**
1.问题现象
**
服务运行在集群中,早上起来客户反应登录没有反应,调用接口报错504
2.解决步骤
2.1 排查服务域名解析是否出问题,
nslookup 域名
内网进去其它pod进去,解析正确
外网直接找个虚机解析域名成功
排除域名解析错误问题
2.2 查看是否集群网络出问题
kubectl get pod -A -o wide 可以展示所有pod 所在集群ip
ping pod所在集群ip
返回值正确,说明集群内部网络没有问题
进入容器内
访问后端服务运行端口
(1)curl IP+PORT
(2)wget IP+PORT
解决方案
发现端口没有响应,于是猜测可能后端服务本身出错了,出于安全考虑。
可以先多开一个副本,这时候发现后端服务恢复正常,原本报错副本还在可以直接删除进行重启,其实情况比较紧急情况下可以直接重启,保留这个副本是方便后面去朔源为什么会系统出错。
后面查看系统日志发现凌晨是MQTT服务数据突然增多,数据库连接池一直爆满,后面又产生锁表情况,导致服务请求数据库一直在等待,等待超时,最终504
针对这种情况,后面部署了Promethus监控,特地对应用服务做了jvm监控还有数据库的监控,下次如果再出现这种情况比较好判断,同样应用服务也开设了3个副本,这样很大程度上缓解了单台的压力,观察了半个月也没有复现这个问题。
大概就这样子啦。