总结:nginx502:API接口502异常排查过程

一、问题背景

118机器出现接口不通报警,一段时间后恢复

二、502可能的原因

1、后端服务挂了

这种表现是立即502,不会出现请求一会之后502,比如上次VPS的cron三台都内存溢出了,虽然进程在,但是日志不打印了。

2、后端响应非常慢(这个可能不是502,而是504,再研究下)

这种主要就是后端服务有压力,导致迟迟不能响应。对于这种现象,主要从后端压力角度去排查

3、请求被丢弃了

tomcat一般会有一个接收队列,如果满了,就会丢弃,这种印象中好像是几秒之后502

三、排查过程

1、确认问题:nginx大量502异常,即nginx对应的后端服务可能处理很慢或者将请求丢弃了。

2、检查118机器的cpu,内存,网络等基础指标,发现eth0这段时间入口流量骤减,几乎为0,而且出问题的几天,时间吻合,其它指标正常,说明流量减少一定是问题的一个主要突破口。

3、eth0网络入口流量为0,有两种可能:1、网络问题导致机器不通;2、tomcat服务负载太高,导致新的socket请求连接被拒绝;

4、检查网络:发现本机的ping检测无丢包现象,另外,同个机房的其它机器也都没有丢包的情况,那么网络问题就可以被排除了。

5、tomcat问题:由于之前调整过acceptcount到10000(当连接数20000左右的时候,会导致队列中的请求等待的时间很长),第一反应是:这个时间段,肯定有一些请求导致tomcat的请求队列满了,导致请求在排队,从而时间比较长。其它请求由于队列已经满了于是被丢弃,tomcat则不会接受TCP连接,从而导致入口流量降低。于是,在tomcat的log中增加了请求时间%T,希望在出问题的时间段找出有请求时间很长的请求。

6、等待了一天。

7、观察昨天的数据:发现在相同的时间段,出现了很多简单的请求却需要花大概将近2分钟,而且很多花了将近1分钟,

分析的命令: sort -k11rg file.txt:简单解释:按照空格分割,分割后按照第11列的数据排序,-r是倒叙排序,-g是将字符串转成数值再排序

8、找到对应的请求地址,以及客户端,找到客户端对应的负责人,和其沟通发现:会在每天凌晨大批量调用这个接口导致。

四、http 502 和 504 的区别

(1)502是网关错误,504是网关超时

(2)二者很类似

  • 502是代理服务器后面的真实服务器节点配置出了问题或者已经挂掉了
  • 而504是代理服务器后面的真实服务器已经过载,它要处理的请求报文实在太多,忙不过来了。

(3)502还有一种情况就是nginx与fastcgi即PHP进程配合的不恰当,导致返回502网关错误。

502–Bad Gateway

当服务器充当网关或代理并收到来自另一台服务器的无效响应时,在数据收集过程中会经常发生此错误;当代理拒绝Internet连接或发送的请求时,会检测到IP对所选设置不可用,因为机器人指示502代码。

504–Gateway Timeout

当服务器(a)充当外部网关或代理并且没有及时收到来自下一个服务器(b)的响应时,会收到“504–网关超时”,在尝试访问以实现请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值