TCP的Delayed ACK与Nagle算法相互作用造成交易处理延迟,是我们最常见的典型网络故障之一。不久前,某金融机构的运维部门对支付平台程序升级后,就经历了Delayed ACK与Nagle算法相互作用导致交易变慢的问题。我们利用网络故障分析方法一起来看看这个案例。
问题突发
这家金融机构的运维人员在完成支付平台的程序升级后,发现新系统的业务处理能力并没有得到明显提高:在支付高峰期,业务交易反而变慢,交易量一直上不去,严重影响用户的在线消费支付体验。反反复复检查网络与应用配置,都没有发现明显异常,最后决定采取捕获数据包来进行分析。
数据包分析
运维人员拿到数据包后用分析工具打开,并未发现有丢包重传、服务器响应慢等问题。但是通过TCP时间间隔进行排序,发现了异常现象:间隔中有许多200ms左右的延迟,几乎没有payload数据负载ACK的回应。大家第一时间联想到这些延迟可能是Delayed ACK与Nagle算法相互作用而产生的。