網絡測速神器:SpeedTest深度指南(獨家)

最近在測試一個項目,裏面涉及到一個測試case:在linux服務器上,當網絡帶寬較差時,觀察服務的消息處理能力和表現。限制網卡帶寬有許多方法,好比Wondershaper或者ethtool。那驗證限速效果呢?python

最簡單的方式是利用wget一個外網上的包,好比各類軟件的下載包,在下載過程當中,wget會顯示帶寬的下載速率,而後經過下載速率x2來估算整個帶寬。但這種方式須要人工觀察整個過程,只有下載速率,也沒有彙總的結果,並且沒有考慮不一樣地區的網絡延遲狀況。在這裏,我給你們推薦一款比較專業的網絡測速的工具,大名鼎鼎的SpeedTestlinux

 

1.簡介

1.1 SpeedTest是幹嗎的?

  1. 測試上性和下行帶寬(即當前網絡的能力)git

  2. 測試網絡延時           (即網絡的穩定性)github

1.2 SpeedTest的特色

  1. 無需依賴瀏覽器:支持web,客戶端,命令行三種方式運行web

  2. 支持遠程服務器和低功耗設備:經過關閉預分配內存參數下降內存消耗shell

  3. 可實現自動化腳本測一段時間網速:在命令行下編寫shell腳本結合crontab能夠獲取一天內不一樣時間段的網速macos

  4. 支持不一樣操做系統的命令行測速:支持windows,linux,macos以及Android和Ios。json

  5. 經過CSV,JSONL或 JSON查看測速結果:支持屢次輸出格式windows

1.3 相關測試場景

1)排查客戶網絡問題瀏覽器

  • 打開web頁面,加載部分資源失效

  • 打開web頁面,websocket接口超時

  • 打開web頁面,上傳圖片和下載文件超時失敗

2)測試服務端外網帶寬

  • 驗證公網限速是否生效

  • 檢測網絡抖動以及延時

2.Speedtest的打開方式

當前有三種方式運行SpeedTest,最方便的就是打開瀏覽器使用SpeedTest:

1. web方式:https://www.speedtest.cn/

2.安裝對於操做系統客戶端

3.命令行執行

下面分別介紹三種方式,其中第二種就以mac客戶端舉例,其餘系統的安裝和操做基本是同樣的。

2.1 web方式

1) 瀏覽器輸入:https://www.speedtest.cn/,點擊 「測速」進行測試

 2) 設置計量單位和測速的量程(可選)

單位指的是網絡速率單位,這裏換算關係爲:1MB=1024KB=1024*1024b,咱們就選擇MB爲單位。

量程指的是要測速的總流量,這裏根據本身狀況選擇便可。

 3) 等測速完畢後,會自動出一份報告

2.2 客戶端方式

1. 訪問https://www.speedtest.cn/app

下載對應系統的客戶端,這裏我選擇MacOS軟件,你能夠根據本身的狀況下載對應的APP,後續測速的操做方式基本都同樣。

2)選擇網絡測速,點擊測速

3)客戶端生成的報告

報告解釋:

1. 下載速度達到了11MB

2.上傳速度達到了11MB

3. ping速度5ms

能夠看到網速仍是不錯的。

2.3 命令行

命令行是方便和靈活的方式,結合腳本能夠靈活地制定出各類SpeedTest-Cli的使用場景。

speedtest-cli是一個python小工具,因此在安裝speedtest以前,建議先安裝好python2環境

2.3.1 安裝

首先須要注意的是,只有用pip安裝纔會安裝到最新版的SpeedTest-cli,不管是brew,yum仍是apt,最後安裝的版本都有多是老版本。

2.3.1.1 Mac(brew安裝)

brew install speedtest-cli

2.3.1.2 Centos(yum安裝)

1) 查找speedcli-test

yum search speedtest-cli

2) 安裝speedtest-cli

sudo yum install python2-speedtest-cli.noarch -y

2.3.1.3 Ubuntu(apt安裝)

sudo apt install -y speedtest-cli

2.3.1.4 pip安裝方式(推薦

#此方法須要預裝python2和pip
pip install git+https://github.com/sivel/speedtest-cli.git

2.3.2 命令行執行

2.3.2.1 幫助

這裏以speedtest-cli的2.1.2版本爲例,不一樣版本的命令行參數可能略有不一樣。

speedtest-cli -h

optional arguments:

-h, --help show this help message and exit

//指定該參數將不測試下載速度,默認是要測試下載速度的,建議不要指定。

--no-download Do not perform download test   

 //指定該參數將不測試上傳速度,默認是要測試上傳速度的,建議不要指定。

--no-upload Do not perform upload test         

//使用單信道,默認使用多信道,測試單文件上傳下載能夠開啓此項。

--single Only use a single connection instead of multiple. This

simulates a typical file transfer.                    

 // 默認單位使用位(bit),開啓此項會使用單位爲字節(bytes),一個字節至關於8個位。此參數沒法影響csv和json,圖像輸出中的單位(仍舊是bit)。

--bytes Display values in bytes instead of bits. Does not

affect the image generated by --share, nor output from

--json or --csv       

//生成一個報告的url,用於分享給別人查看                                         

--share Generate and provide a URL to the speedtest.net share

results image, not displayed with --csv

//輸出概要結果,而不是詳細結果

--simple Suppress verbose output, only show basic information   

//輸出爲csv格式,速度單位限定爲bit/s   

--csv Suppress verbose output, only show basic information

in CSV format. Speeds listed in bit/s and not affected

by --bytes                                                     

 //設定csv的分隔符,默認爲逗號

--csv-delimiter CSV_DELIMITER                  

Single character delimiter to use in CSV output.

Default ","

//輸出csv的header,就是表頭

--csv-header Print CSV headers                    

//輸出爲json格式,速度單位限定爲bit/s

--json Suppress verbose output, only show basic information  in JSON format. Speeds listed in bit/s and not

affected by --bytes                                           

//查看當前speedtest用於測速的目的服務器

--list Display a list of speedtest.net servers sorted by         

distance

 //指定目的服務器ID進行測試,這裏的ID爲--list查詢到的服務器ID

--server SERVER Specify a server ID to test against. Can be supplied

multiple times

//排除目的服務器ID進行測試,這裏的ID爲--list查詢到的服務器ID

--exclude EXCLUDE Exclude a server from selection. Can be supplied

multiple times

//這裏試了下,貌似目的服務器不存在,超時了

-mini MINI URL of the Speedtest Mini server                                   

//指定源ip,其實就是本機ip,能夠用ifconifg查看本機ip

--source SOURCE Source IP address to bind to                                

//設置http超時時間,默認爲10s

--timeout TIMEOUT HTTP timeout in seconds. Default 10                  

//指定--secure後,會使用https協議進行通訊

--secure Use HTTPS instead of HTTP when communicating with

speedtest.net operated servers                                                       

//這裏是speedcli-test的內存使用策略,默認開啓就好,指定此參數會佔用過多內存

--no-pre-allocate Do not pre allocate upload data. Pre allocation is   

enabled by default to improve upload performance. To

support systems with insufficient memory, use this

option to avoid a MemoryError

 //查看對應版本

--version Show the version number and exit                                    

2.3.2.2 實例

1) 執行默認測速

speedtest-cli

過一下子就能輸出對於的報告,如圖,個人實際上傳速度爲73Mbps,下載速度爲92.75Mbps,我家辦理的網正好是百兆帶寬。

2)輸出簡要報告

speedtest-cli --simple

3)使用https通訊

speedtest-cli --simple --secure

4)設置網速單位爲字節

speedtest-cli --simple --secure --bytes

5) 綁點源IP

speedtest-cli --source 192.168.31.133

6) 輸出Json格式

speedtest-cli --json

7)CSV操做

a)輸出csv-header

b)輸出csv格式數據

c)設置csv分隔符

8) 查看當前用於測試的目的服務器

speedtest-cli --list

9) 指定測試的目的服務器測速

speedtest-cli --server 5485

以上就是speedtest的全部安裝以及使用介紹,編寫不易,若是對你有幫助,辛苦點個贊,有疑問能夠在文章後面留言~

 

快送門:各類學習資料與大廠招聘

博主:測試生財(一個不爲996而996的測開碼農)

座右銘:專一測試開發與自動化運維,努力讀書思考寫做,爲內卷的人生奠基財務自由。

內容範疇:技術提高,職場雜談,事業發展,閱讀寫做,投資理財,健康人生。

csdn:https://blog.csdn.net/ccgshigao

博客園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

微信公衆號:測試生財(按期分享獨家內容和資源)

相關文章
相關標籤/搜索