為什麼需要測量帶寬、延遲、抖動和丢包率?
當我們說一個網絡環境好時,通常是指我們“感覺”通路網站立刻就打開了;可是如果反過來,一個網站很久才打開,就一定是網絡環境差嗎?未必,也可能是網站本身有問題。如果這是自己的網站,你一定不希望通過反複重新整理頁面,或者多拿幾台電腦通路去“感覺”它的速度作為判斷網絡是否良好的依據,我們需要一個更加可靠的技術手段。這些名額便是判斷到伺服器的網絡是否良好的基礎名額。
除了故障排查外,以下幾種情況我們也需要了解這些參數:
- 購買
:在你購買一台VPS
,特别是外國的VPS
時,你一定會想了解到底在外國和在國内能不能順暢地通路自己的VPS
,特别是帶寬參數是否跟實際購買的一緻;VPS
- 性能測試:你希望對自己的網站做性能測試,需要確定自己的網絡環境是滿足名額要求的;
什麼樣的名額是合格的?
首先,沒有一個通用的名額,不同的應用場景所需要的名額各不相同,比如 IP電話、視訊與通路網站的網絡名額要求就各不相同,這裡隻分析網站通路的情況。
從伺服器環境角度看,伺服器隻能控制自己的帶寬,但是普通使用者實際通路的環境是控制不了的,伺服器需要做的是在差的環境也能提供較好的體驗,這不是本文的主題,是以我們談名額時并不是指伺服器的角度。
從使用者(開發者或者普通使用者)環境角度看,如果一個網站本身是符合要求的(
Google Pagespeed Insight
達到90分以上),網絡環境應該滿足什麼樣的名額,使用者打開我們的網站才會很快。這本身也是一個經驗名額,并沒有一個定論,下面的名額是我在做性能測試時要求的名額,它的要求高于普通使用者浏覽網站,是以能夠滿足此名額,網絡環境是沒問題的。
- 帶寬:與服務商提供的最大帶寬接近
- 延遲:
<100ms
- 抖動:
<20ms
- 丢包率:
<1%
測量方法
測量伺服器帶寬
使用
iperf
工具測試伺服器帶寬,它分為服務端與用戶端,兩邊都要安裝
iperf
工具。在
Linux
通過
yum
或者
apt-get
即可直接安裝。
服務端(假設 IP
為 106.14.26.11
)運作 iperf
服務:
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.shifen.com (163.177.151.109): 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.shifen.com ping statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss #最後這個百分比就是丢 包率
round-trip min/avg/max/stddev = 21.505/26.743/50.786/6.613 ms #分别表示最小延遲、平均延遲、最大延遲、抖動(抖動就是延遲标準差)
根據上面的結果,我們得到結論:
延遲:26.743ms
抖動: 6.613ms
丢包率: 0.0%
符合名額要求,是以通路百度一定很快。(這裡假設帶寬是沒問題的,測量到伺服器的帶寬需要伺服器支援,是以是測量不了的)
參考資料
- 使用iperf測試伺服器帶寬、延遲抖動、丢包
- iperf指令
- 在不斷變化的網絡中優化性能