一次服务器502的故障剖析

作者: dino.ma 分类: PHP 发布时间: 2019-05-08 17:40

一丶线上机器人报警

二丶通过报警信息可以直观的看到

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日志

很奇怪,在日志中发现 nginx并没有记录到API Gateway的请求转发过来。

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

发现同样没有对应的日志进行记录

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



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

8.查看系统log

那么即可断定在16:02:18有人重启了nginx服务故导致API Gateway 502的发生


发表评论

电子邮件地址不会被公开。 必填项已用*标注