您的位置 首页 > 数码极客

【ttl64】如何测量服务器网络带宽、延迟、抖动和丢包率?

为什么要测量带宽、延迟、抖动和丢包率?

当我们说网络环境好的时候,通常意味着我们访问网站的“感觉”就打开了。但是相反,如果一个网站开了很久,网络环境会不好吗?不一定,但网站本身可能有问题。

如果这是自己的网站,你一定不希望通过反复刷新页面,或者多拿几台电脑访问去“感觉”它的速度作为判断网络是否良好的依据,我们需要一个更加可靠的技术手段。这些指标便是判断到服务器的网络是否良好的基础指标。

除了故障排查外,以下几种情况我们也需要了解这些参数:

  • 购买VPS:在你购买一台VPS,特别是外国的VPS时,你一定会想了解到底在外国和在国内能不能顺畅地访问自己的VPS,特别是带宽参数是否跟实际购买的一致;
  • 性能测试:你希望对自己的网站做性能测试,需要确保自己的网络环境是满足指标要求的;

什么样的指标是合格的?

首先,没有一个通用的指标,不同的应用场景所需要的指标各不相同,比如 IP电话、视频与访问网站的网络指标要求就各不相同,这里只分析网站访问的情况。

从服务器环境角度看,服务器只能控制自己的带宽,但是普通用户实际访问的环境是控制不了的,服务器需要做的是在差的环境也能提供较好的体验,这不是本文的主题,所以我们谈指标时并不是指服务器的角度。

从用户(开发者或者普通用户)环境角度看,如果一个网站本身是符合要求的(Google Pagespeed Insight达到90分以上),网络环境应该满足什么样的指标,用户打开我们的网站才会很快。这本身也是一个经验指标,并没有一个定论,下面的指标是我在做性能测试时要求的指标,它的要求高于普通用户浏览网站,因此能够满足此指标,网络环境是没问题的。

  • 带宽:与服务商提供的最大带宽接近
  • 延迟:<100ms
  • 抖动:<20ms
  • 丢包率:<1%

测量方法

测量服务器带宽

使用iperf工具测试服务器带宽,它分为服务端与客户端,两边都要安装iperf工具。在Linux通过yum或者apt-get即可直接安装。

服务端(假设IP为106.14.26.11)运行iperf服务:

#iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)

这是一台上下行带宽都接近100Mbits/sec的服务器,实测数值不应该与该数值偏离太远。

客户端

测试上行和下行带宽

$iperf -c 106.14.26.11 -t 60 -d ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ ------------------------------------------------------------ Client connecting to 45.32.64.187, TCP port 5001 TCP window size: 197 KByte (default) ------------------------------------------------------------ [ 4] local 104.250.144.8 port 50040 connected with 106.14.26.11 port 5001 [ 5] local 104.250.144.8 port 5001 connected with 106.14.26.11 port 34386 [ ID] Interval Transfer Bandwidth [ 4] 0.0-60.0 sec 658 MBytes 92.0 Mbits/sec #上行带宽 [ 5] 0.0-60.4 sec 628 MBytes 87.4 Mbits/sec #下行带宽

从测试结果看,上行带宽为92.0Mbits/sec, 下行带宽为87.2Mbits/sec,低于服务器的100Mbits/sec,但是没有低得很离谱。

如果你的客户端无法连接到iperf服务端,可能是主机的防火墙挡住或者VPS提供商做了限制。对于前者,通过iptables -F即可解决;对于后者,有几种解法:进VPS提供商的控制台修改、联系VPS提供商、修改端口为外部可以访问得到的端口。


测量延迟、抖动和丢包率

延迟,抖动和丢包率,直接使用PING做测试即可。如果想测量这个值,建议抓100个包测试:

$ ping -c 100 www.baidu.com PING www.a. ): 56 data bytes 64 bytes from 163.177.151.109: icmp_seq=0 ttl=55 time=26.639 ms 64 bytes from 163.177.151.109: icmp_seq=1 ttl=55 time=24.329 ms 64 bytes from 163.177.151.109: icmp_seq=2 ttl=55 time=24.794 ms 64 bytes from 163.177.151.109: icmp_seq=3 ttl=55 time=22.709 ms 64 bytes from 163.177.151.109: icmp_seq=4 ttl=55 time=39.994 ms 64 bytes from 163.177.151.109: icmp_seq=5 ttl=55 time=50.786 ms 。。。省略 ^C --- www.a. ping statistics --- 100 packets transmitted, 100 packets received, 0.0% packet loss #最后这个百分比就是丢 包率 round-trip min/avg/max/stddev = 21.505 ms #分别表示最小延迟、平均延迟、最大延迟、抖动(抖动就是延迟标准差)

根据上面的结果,我们得到结论:

延迟:26.743ms 抖动: 6.613ms 丢包率: 0.0%

上面的实验大家有空可以做下,还是很有用的。

觉得有用的可以关注下哦~

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

推荐阅读