如何測量服務器網絡帶寬、延遲、抖動和丟包率?

爲何須要測量帶寬、延遲、抖動和丟包率?

當咱們說一個網絡環境好時,一般是指咱們「感受」訪問網站馬上就打開了;但是若是反過來,一個網站好久纔打開,就必定是網絡環境差嗎?未必,也多是網站自己有問題。若是這是本身的網站,你必定不但願經過反覆刷新頁面,或者多拿幾臺電腦訪問去「感受」它的速度做爲判斷網絡是否良好的依據,咱們須要一個更加可靠的技術手段。這些指標即是判斷到服務器的網絡是否良好的基礎指標。html

除了故障排查外,如下幾種狀況咱們也須要了解這些參數:linux

  • 購買VPS:在你購買一臺VPS,特別是外國的VPS時,你必定會想了解到底在外國和在國內能不能順暢地訪問本身的VPS,特別是帶寬參數是否跟實際購買的一致;
  • 性能測試:你但願對本身的網站作性能測試,須要確保本身的網絡環境是知足指標要求的;

什麼樣的指標是合格的?

首先,沒有一個通用的指標,不一樣的應用場景所須要的指標各不相同,好比 IP電話、視頻與訪問網站的網絡指標要求就各不相同,這裏只分析網站訪問的狀況。web

從服務器環境角度看,服務器只能控制本身的帶寬,可是普通用戶實際訪問的環境是控制不了的,服務器須要作的是在差的環境也能提供較好的體驗,這不是本文的主題,因此咱們談指標時並非指服務器的角度。chrome

從用戶(開發者或者普通用戶)環境角度看,若是一個網站自己是符合要求的(Google Pagespeed Insight達到90分以上),網絡環境應該知足什麼樣的指標,用戶打開咱們的網站纔會很快。這自己也是一個經驗指標,並無一個定論,下面的指標是我在作性能測試時要求的指標,它的要求高於普通用戶瀏覽網站,所以可以知足此指標,網絡環境是沒問題的。服務器

  • 帶寬:與服務商提供的最大帶寬接近
  • 延遲:<100ms
  • 抖動:<20ms
  • 丟包率:<1%

測量方法

測量服務器帶寬

使用iperf工具測試服務器帶寬,它分爲服務端與客戶端,兩邊都要安裝iperf工具。在Linux經過yum或者apt-get便可直接安裝。網絡

服務端(假設IP106.14.26.11)運行iperf服務:

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

這是一臺上下行帶寬都接近100Mbits/sec的服務器,實測數值不該該與該數值偏離太遠。chrome-devtools

客戶端

測試上行和下行帶寬工具

$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%

符合指標要求,因此訪問百度必定很快。(這裏假設帶寬是沒問題的,測量到服務器的帶寬須要服務器支持,因此是測量不了的)

參考資料

  1. 使用iperf測試服務器帶寬、延遲抖動、丟包
  2. iperf命令
  3. 在不斷變化的網絡中優化性能
相關文章
相關標籤/搜索