网络部署情况如图
一次请求的流程
1.app将请求报文加密后发送,经过F5(进行IP分发)给对应的Nginx集群
2.Nginx对应配置进行转发到不同的服务提供区,到服务区后F5设备继续进行规则分发,分发到对应移动后端服务器
3.移动后端会将信息解密后进行api转发,给具体的数据侧服务器
4.数据侧服务器收到请求后处理,进行链路的响应。
问题: 发现App收到的请求不定时出现不完整
排查步骤
1.确保不是加解密请求问题,确保代码的正确性,确保不是程序问题
2.排查网络抖动情况和nginx对应配置
3.检查出错时的网络情况
经以上检查都没有问题。
猜测出现在中间件的环境问题。
经对各链路进行抓包后发现,app服务侧的前置Nginx的响应报文在没有接收完就出现了RST报文。
定位到问题出现位置后,进行了该位置的Nginx集群的配置检查,发现配置也没有问题。
继而进行了日志的检查,发现失败请求日志,提示nginx的数据缓冲区proxy_temp权限不够。
检查该文件发现执行权限为root,不是nginx。成功定位到问题(后期发现是有一次维护时,相关人员误操作导致)
</