做性能测试的时候,碰到网络占用了很多的情况,监控如下图:
图示中traction表示每秒发出去的字节数。很明显,这个指标明显偏高,但是感觉应用不可能出现问题。用tcpdump+wireshark来排查一下网络原因。
一。linux下用tcpdump把网络信息dump出来。
机器的ip为:10.1.1.1(自己的ip对号入座),因为发出去的请求有问题,于是重点查看从10.1.1.1发出去的网络。如果是收到的网络流量很大,可以看tcpdump对应命令。
用tcpdump先dump出网络情况,命令为:
sudo -u root /usr/sbin/tcpdump src host 10.1.1.1 -w transction.log
我的tcpdump在/usr/sbin/tcpdump下面,根据情况替换为自己的目录。关于tcpdump的安装可以自己搜下,使用可以参看:
http://tcpdump.anheng.com.cn/news/22/591.html
http://network.51cto.com/art/200512/15473.htm
http://www.tcpdump.org/tcpdump_man.html
二。windows下面解析网络请求:使用工具wireshark
定位是和哪台机器传输的流量:把transction.log传到windows下面,用wireshark打开,选择statistic->conversations,选择ipv4:3,查看排查是和哪个ip传输的网络流量最大。
图中第一条的B为我们的linux机器,Bytes A<-B的第一行明显很大,所以我们定位出是第一行A机器的问题。
因为到这里,我能猜到原因了,就没再继续下去,如果想继续定位具体请求的内容,可以在刚打开页面筛选具体的条件,查看结果。最终定位出网络消耗大的原因。
wireshark的下载页面为
http://www.wireshark.org/download.html