利用网络分析技术诊断BOSS系统故障

日期: 2014-02-18 来源:TechTarget中国

案例背景

1、故障描述

  • 某运营商Boss系统向服务器提交订单,每天会有600个左右不成功的订单,不成功的订单需手工录入,极大的影响工作效率;该情况已持续2-3个月;
  • 持续ping服务器和boss,未出现任何的丢包现象;
  • 应用部门和应用厂商检查应用程序和规则说一切正常;
  • 网管人员检查网络设备的性能,设置(MTU、MSS等)一切正常;
  • 管理人员在boss系统上抓取的同步数据包大于在PIX之前抓取的数据包,怀疑有丢包,但其它应用和ping都正常,网络丢包没有说服力。

2、网络拓扑

图 1 网络拓扑图

案例分析

订单提交不成功有两种情况,一是服务端未收到boss的请求,二是服务端收到请求后未响应,由于用户反映在boss和pix上抓包不一致,遂选择在boss和pix上进行抓包(将便携式和回溯系统的时间同步)。

分别提取回溯系统和便携式上的数据包,进行对比分析。

在6503上捕获到10.238.230.50和10.238.103.86的会话中,存在多个syn包无响应的会话,从而证实确实存在订单提成不成功的问题,而在PIX的入口并没有捕获到该会话,也就是说服务端并未收到boss的应用请求,所以该现像与服务器端无关。

如图2:

图 2 boss端TCP会话

再来看在PIX前抓取的数据:

服务端没有收到boss系统的请求包,是不是因为包被丢弃了?从拓扑上看,数据经过的都是路由、交换设备,该数据包并未到达防火墙,且该链路上的其它应用一切正常,网络丢包没有说服力。

进一步分析发现网络中存在大量的FIN数据包,4452个数据包就有2498个包带FIN标记。

过滤FIN数据包,发现绝大部份FIN数据包都是由boss服务器发出来的。

再定位到TCP会话,通过时序图查看会话中FIN包的情况,可以看到在一个会话中存在多个FIN位置1的数据包,而且没收到对端的确认,这表示该会话没有正常关闭。

网络中存在大量的在一个会话中发送大量FIN+ACK置1且window为0的数据包的情况(我们知道,在数据传输过程窗口为0表示不能接受任何数据,至于关闭连接的window为0是否表示不能接收任何数据包有待验证,但可以肯定是不正常的),且这些会话都与10.238.230.50有关,这就表示在10.238.230.50上有很多未关闭的TCP会话,这是不正常的,需要进一步分析原因。

简单的说,在通讯过程中,客户端和服务端的TCP状态迁移如下:

客户端TCP状态迁移:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务器TCP状态迁移:

CLOSED->LISTEN->SYN

收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED登录10.238.230.50后台,通过netstat查看主机的会话状态。

10.238.230.50上存在近5000个状态为colse_wait的连接,会话处于Colse_wait表示该连接还没有发FIN+ACK数据包。通常情况下,一个colse_wait会维持至少2个小时的时间,这样,随着时间的增加就会导致不能释放的会话越来越多,直到系统没有资源处理新的连接请求。

分析结论

10.238.230.50上存在大量未释放的TCP连接,TCP是有队列限制的,当队列已满时,TCP将不会处理传入的SYN,也不会发RST应答,因为队列已满是由应用程序和操作系统繁忙造成的(详见TCP/IP卷1第18章),这也能解释为什么服务端没有收到boss的SYN包了,实际上这些数据包是boss系统收到的营业厅的SYN包,但由于boss系统队列已满或繁忙,则对其不做处理。
10.238.230.50在与server关闭连接的过程中,window为0,可能是系统忙于处理colse_wait会话所致,从而导致boss与server的通讯异常。

订单提交不成功的原因是boss系统队列已满或繁忙,没有资源对连接请求进行处理,问题出在boss系统。

分析建议

检查10.238.230.50与10.254.126.227和10.238.159.90的应用通讯和应用程序(因为colse_wait的会话大部分与这两个IP有关,而10.238.230.50 与server的连接状态是正常的)。
修改tcp_keepalive_*的相关参数。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐