一、问题描述
某金融机构的IDC机房一套行情查询系统,为各个营业网点提供行情信息查询服务;该业务系统上线后,不少营业网点均反应说该系统很慢,具体表现在:客户端打开行情软件缓慢、点击查询之后需要很长时间行情信息才会出现。
二、分析方法
网管人员通过网管工具看到:IDC机房出口负载并不高;防火墙等网络设备运作正常。于是,我们选择一个网络性能良好的营业网点,找到一台客户端,通过科来网络分析系统捕获该客户端访问行情查询系统的数据包,对该业务系统的TCP交互时延的进行分析,从而定位网络、服务器及客户端的性能问题。
三、分析过程
在客户端上安装科来网络分析系统后,使用科来网络分析系统捕获数据包,然后发现,从在软件上点击“查询数据”开始计时,到行情信息出现,总用时5秒钟。
1.TCP交互时延分析原理
对于业务系统“慢”的现象,我们可以通过科来网络分析系统“时延”分析的技巧去定位问题。三次握手分析网络时延的技巧:

图 1
科来网络分析系统捕获到每一个数据包都会打上时间戳,而系统在处理三次握手的时候,由于不含应用层的信息,所以T2-T1可以近似为服务器端网路时延,T3-T2可以近似为客户端网络时延,正常情况,(服务器端网络时延+客户端网络时延)与彼此ping的时延相近。
那么,这次我们在客户端找包时,T2-T1近似与整个网络时延,正常情况与ping值相近 ,T3-T2为客户端处理处理“SYN ACK”的时延,一般小于1毫秒 。
2.时延状况分析
TCP会话持续时间:持续了4.6秒,持续时间略长,究竟是网络、服务器还是客户端时延造成?

图 2
连接建立分析:从分析原理模型,我们可以看出,T2-T1=21.685毫秒,考虑到这是在客户端抓包,T2-T1时间可以近似为网络时延,通过广域网访问的网络时延在20毫秒左右还是比较快的(同城ping时延一般在十几毫秒,中国到美国的ping时延在200毫秒左右);
下图中用红线标出来的是服务器响应时延,绿色线标出来的是客户端响应时延,红色时延基本都在20多毫秒,接近网络时延,证明服务器处理性能良好;同样,绿色时延也相当小,说明客户端接收数据也很快:

图 3
从上图分析,我们可以得出的结论是:广域网网络性能良好、服务器处理性能良好、客户端接收数据性能也相当不错。究竟是什么问题造成该链接持续了4.6秒钟,我们需要继续往下看。
3.有效数据传输分析
在该TCP连接第0.66秒钟的时候,服务器已经给出了“FIN”——结束连接的信号,这是否意味着0.66秒钟的时候,服务器已经传完数据了:

图 4
对客户端收到“ACK,FIN”包之后的数据包解码分析,可以看到,之后的数据包都是“Connection:keep-alive”保持连接不中断,以及刷新客户端服务器状态的数据包:

图 5
综上所述,我们可以确认在0.66秒钟的时候,客户端已经收到服务器所有的数据,客户端软件将在应用层处理这些数据,并将行情的数据显示出来,而客户端应用层处理数据的时候明显有点久,5秒钟后,我们才在客户端软件上看到行情信息。
由此可见,这次“慢”的原因主要在客户端处理数据这一过程。之后,我们尝试了几次访问,获得如下统计表格:
有效数据传输时间:通过科来软件看到服务器传完数据,发出“FIN”信号的时间
客户端显示时间:从在软件点击“查询数据”到数据显示出来的时间
客户端程序数据处理时间:“客户端显示时间”与“有效数据传输时间”的时间差,这个时间差可以用来衡量客户端程序处理数据的效率,该数值越大,证明客户端软件的处理效率越低。
通过多次的测试,基本可以确认,该行情系统的瓶颈在于客户端程序的处理性能。
四、问题解决
研发部门对客户端程序及服务器配置进行优化,客户端处理问题延时的问题得到解决。 |