背景:
上回出差发现我们的一款线下产品在部署后,试用一段时间以后就会发生网络阻塞,但是过一段时间以后又会恢复正常。
排查过程:
1.一开始以为是数据量交互过大,移动端发起了高并发请求引起网络反应缓慢,在查到app相关代码后,确实有一种情况会发生高并发,并且数据量还不小,修改以后,状况有所好转,但还是有该情况发生,只不过时间延长了一些;
2.怀疑是局域网服务端问题,于是乎将自己电脑连入网络充当服务器,奇怪的是没有发生该情况,于是认为是服务器问题,一番排查以后,返现服务器没有任何设置会引起该情况;
3.将自己电脑拿到机房,顶替掉服务器以后,返现状况依旧,看来服务器设置果然是没有毛病;
4.分析网络状况,当前的网络状况为:APP-->AP-->交换机1-->AC-->路由器-->交换机2-->服务器,当前是这样的情况,但是发现自己电脑接入没有问题的时候是接入的同一个AP下,看来和网络中的某个设备有关系;
5.依次将自己电脑接入2,问题依旧,接入AC,情况正常,于是认为,问题发生在路由器上;
6.用网络抓包软件对路由器进行抓包,发现网络卡顿以后出现较多这样的报错:TCP segment of a reassembled PDU.经过仔细搜寻,发现应该是MTU值引起的,于是继续排查;
7.使用ping -l 1472 -f 192.40.23.1 对路由器进行MTU值测试,得出的值为950左右,测试服务器的MTU值为1500,于是乎可能就是服务器的1500的MTU值导致路由器不停的拆包组包造成较大压力,在服务器中将ifcfg-eth1加上MTU=950以后,情况大为好转,情况发生的时间延迟了大约4倍,反过来一项,服务器是做了设置,APP是没有做这方面的设置呀!如果APP方面做了设置是不是就可以了,咨询了Android开发工程师,他们也没有弄过,也只好暂时将服务器接入到AC控制器下面,问题暂时得到解决。
参考文献:http://blog.csdn.net/doraemon_wu/article/details/52166120