一次服务器502的故障剖析
一丶线上机器人报警

二丶通过报警信息可以直观的看到
Server error: `POST https://x.com/classes/list/ver` resulted in a `502 Bad Gateway`
三丶那么思考一下简版服务器架构

通过服务器架构可以简单看出来,商城的请求通过API Gateway 之后到 教务系统。
- 那么通过应用层协议是否应该是 商城的 PHP脚本 发起curl请求到商城的Nginx 通过proxy转发到API Gateway
- API Gateway进行鉴权等控制转发此次请求到教务系统的Nginx 之后Nginx 通过FastCgi协议与PHP进行通讯 教务系统的PHP脚本进行数据处理并返回相应数据
那么,综上所属。我们查询的思路大致为:
1.查看API Gateway是否存在此次请求,通过Nginx日志查看 http状态码 http URL地址 Proxy 目标机器

2.在API Gateway上确实发现了此次请求的502日志,目标机器为 192.168.1.126
3.那么确认192.168.1.126是否为转发目标机器则查看系统API Gateway 的proxy 和upstream


4.通过以上可以证明此次请求已通过商城请求到API Gateway 并请求到 教务系统则判断此次502应为API Gateway 或教务系统返回
5.查看教务系统nginx日志

6.那么查看系统nginx默认日志

7.查看nginx 启动进程的CPU时间

好像找到了问题所在,16:02为502故障发生时间,那么推测应该是有人重启过nginx。
安利一波:生产环境重启Nginx应使用平滑重启。
8.查看系统log
