本帖最后由 KYLE_K 于 2020-8-5 22:30 编辑
故障描述: 据X公司业务部门描述,对接腾讯业务财付通偶尔会出现交易失败情况,腾讯方反馈业务交易超时,超时时间为3秒。在发生故障时段,X公司服务器日志上可看到失败交易响应时长长达数秒甚至20s以上。此次故障通过多点同时抓包进行交易拆解分析,定位导致交易失败根本原因,业务逻辑及部署情况如下图:
分析结论: 1.在故障交易时段,前置服务器网络与后端服务器网络正常,无出现数据传输延时和丢包/重传现象,可排除网络原因导致的交易失败。 2.在交易失败是,发现前置服务器有“延缓”转发交易请求现象,从前置接收请求到转发请求时间间隔远大于腾讯超时时间,这是导致交易失败的根本原因。 3.通过当前采集数据分析发现只有前置服务器20.X.X.22会出现这种“延缓“转发请求情况,建议相关部门对该服务器进行性能或应用方向排查。
分析过程:
1.着重对交易分析失败时段数据进行回溯分析: 12月5日15:08-15:10分: 出现大量交易超时 12月7日8:05-8:06分: 出现一笔交易超时
2.前置服务器数据分析: 12月5日15:08-15:10分腾讯财付通出现大量交易超时,通过前置服务器抓取数据看到服务器20.X.X.22有交易被重置现象,重置数量32,如下图所示:
3.前置区域网络性能分析: 网络出现问题会导致数据传输出现时延大和数据丢包/重传现象,通过分析网络性能指标,在故障时段内,前置区域网络性能良好,网络时延在微妙级别,不存在丢包/重传。因此可排除网络因素的影响,如下图所示:
4.通过通讯流数据重组,可见重置是由于腾讯方交易超时中断,后续数据被RST,整交易过程26.6s,在3s时刻腾讯方20.0.41.202发送超时结束FIN信号,后续X公司数据被RST。而此笔交易X公司服务器响应时间超26s,这是造交易失败原因,如下图所示:
5.前置服务器20.X.X.21无发现连接重置现象,如下图所示:
6.前置服务器20.X.X.22出现交易响应缓慢,原因可能有: 一. 后端服务器请求响应缓慢; 二. 前置服务器没有实时转发请求至后端服务器,而是“延缓”转发; 三. 前置至后端服务器网络出现问题,影响正常数据传输;
7.根据第6点的三种可能进行分析: 一.重置单号追踪分析 在前置-后端交易中,可通过失败单号进行交易追踪分析,定位交易失败环节,以下是在5日15:09分的一笔交易超时单号,此笔交易总时长26.6s(见第4点的数据流重组图),传输数据内容如下: "chkid":"CFT111201712051509215074716615" "sign":"0BE915E070A313639405CC6EEA6AE829C6AAD7ED7521F33AE589AA8D37C52A84B49D561844FB7729F25FA02FB03411A150ECBDF727ED2D27EE523CAC2FD7B02364B7BF97132B3D95FDB8EEC071F4519627D10F0AF74DCE94F539EFAA21BE9CFE1A67D6747D83397E8267F345EE7594535AD2EA6F4A8FBE8A55F1DF7B9BE67CD5"
二.在前置抓取可见这笔交易请求在15:09:08前置服务器已接收请求,如下图所示:
三.通过单号追踪在后端服务器却看到这个请求发起时间为15:09:55,前后请求时间相差26s,如下图所示:
四.从后端服务器会话分析可见,前置服务器转换地址20.X.X.1在15:09:55才跟后端服务器20.x.x.11发起链接请求,并把交易失败单号发送至后端服务器,如下图所示:
五.后端服务器网络性能指标良好,网络时延和丢包/重传率都正常,如下图所示:
六.另外一笔失败的交易,出现在12月7日上午8:05,单号如下: "channelFlow":"CFT201712070805400015024233666","channelTime":"080540","encryptData":"","sign":"3A577CB263A9B3FBDE167ADF87A6C9C379BBAAD0C958DCAC53750046DBB6A0E4F56EE53C693A26B61B999E6DD9922E52F823870270DC8812A39A81BEF43AA240984327EFBD4C1A3B87392353A9917E053D0D68C825EE4B8EE4296FB4FDFDC50DB9099C7EC9563815CDA866F9B9B8E3E317A0EA389CFA5706A89530AA390E9867" 通过对比前端,发现前端服务器收到请求的时间为8:05:15,后端服务器接收到请求时间为8:05:22,明显可以看到失败原因是由于前置服务器“延时”7s转发交易请求导致的,如下图所示: (前端服务器收到请求截图)
(后端服务器收到请求截图)
案例分析中用到的思路: 1.对同一个数据流,在不同的网段进行关联分析,从关联分析中发现问题; 2.对于有经过地址装换的数据包,在地址转换的过程中因为传输的数据内容不变,可以通过数据内容找到相同的数据流,从而进行数据关联分析。 3.通过交易独有的数据特征,例如本次案例中的交易单号,找到对应的数据包,进行关联分析。 |