网页接口偶发性502的问题

现象:

网页接口一直偶发性502,概率大概20%左右

 

排查过程:

架构是用户->WAF->lvs->NGINX->后端

 1、尝试减少接口请求,依然会502,可知和接口服务能力无关。

2、WAF侧,更换服务IP,依然不行,可知不是WAF某个节点网络有问题。

3、Nginx侧,查看日志,并未发现502日志,可知502的请求没到nginx,怀疑是waf就没发请求过来。

4、直接请求源站和nginx都不会出现502现象,但经过WAF就会有502。

4、抓包排查,在WAF侧抓包

 从waf侧抓到的包看,waf与源站成功建连,waf发起post请求后,源站58.220.164.203 响应了一连串的RST包。这时203源应该没把请求转发给nginx,需要看下 203源响应RST原因

在nginx侧抓包

 请求响应都正常,这样验证nginx日志没有502.

在LVS侧抓包

 确实LVS机器会发送RST终止TCP链接给WAF

初步定位原因:

【问题描述】 域名通过waf节点访问概率性响应502,访问源站正常。
【问题原因】WAF节点默认使用连接复用回源,源站不支持连接复用,RST这部分请求,导致WAF响应502。
【建议解决措施】
1、源站开启支持连接复用,规避WAF回源失败概率性502问题。
2、WAF侧针对域名粒度关闭回源连接复用,采用单连接回源,规避概率性502问题。

查看内核TCP长连接时间设置

# sysctl -a | grep net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_time = 1200

查看LVS的配置

 确认是LVS的tcp长链接时间5S过短

# ipvsadm --set 7200 120 300

修改后验证,502现象消失。


 

wireshark抓包,异常数据分析常见RST介绍

 https://www.jianshu.com/p/6542a066f41b

posted @ 2023-03-30 17:01  Justtosee  阅读(1071)  评论(0编辑  收藏  举报