最近在測試一個項目,裏面涉及到一個測試case:在linux服務器上,當網絡帶寬較差時,觀察服務的消息處理能力和表現。限制網卡帶寬有許多方法,好比Wondershaper或者ethtool。那驗證限速效果呢?python
最簡單的方式是利用wget一個外網上的包,好比各類軟件的下載包,在下載過程當中,wget會顯示帶寬的下載速率,而後經過下載速率x2來估算整個帶寬。但這種方式須要人工觀察整個過程,只有下載速率,也沒有彙總的結果,並且沒有考慮不一樣地區的網絡延遲狀況。在這裏,我給你們推薦一款比較專業的網絡測速的工具,大名鼎鼎的SpeedTest。linux
1.簡介
測試上性和下行帶寬(即當前網絡的能力)git
測試網絡延時 (即網絡的穩定性)github
無需依賴瀏覽器:支持web,客戶端,命令行三種方式運行web
支持遠程服務器和低功耗設備:經過關閉預分配內存參數下降內存消耗shell
可實現自動化腳本測一段時間網速:在命令行下編寫shell腳本結合crontab能夠獲取一天內不一樣時間段的網速macos
支持不一樣操做系統的命令行測速:支持windows,linux,macos以及Android和Ios。json
經過CSV,JSONL或 JSON查看測速結果:支持屢次輸出格式windows
1)排查客戶網絡問題瀏覽器
打開web頁面,加載部分資源失效
打開web頁面,websocket接口超時
打開web頁面,上傳圖片和下載文件超時失敗
2)測試服務端外網帶寬
驗證公網限速是否生效
檢測網絡抖動以及延時
當前有三種方式運行SpeedTest,最方便的就是打開瀏覽器使用SpeedTest:
1. web方式:https://www.speedtest.cn/
2.安裝對於操做系統客戶端
3.命令行執行
下面分別介紹三種方式,其中第二種就以mac客戶端舉例,其餘系統的安裝和操做基本是同樣的。
1) 瀏覽器輸入:https://www.speedtest.cn/,點擊 「測速」進行測試
2) 設置計量單位和測速的量程(可選)
單位指的是網絡速率單位,這裏換算關係爲:1MB=1024KB=1024*1024b,咱們就選擇MB爲單位。
量程指的是要測速的總流量,這裏根據本身狀況選擇便可。
3) 等測速完畢後,會自動出一份報告
1. 訪問https://www.speedtest.cn/app。
下載對應系統的客戶端,這裏我選擇MacOS軟件,你能夠根據本身的狀況下載對應的APP,後續測速的操做方式基本都同樣。
2)選擇網絡測速,點擊測速
3)客戶端生成的報告
報告解釋:
1. 下載速度達到了11MB
2.上傳速度達到了11MB
3. ping速度5ms
能夠看到網速仍是不錯的。
命令行是方便和靈活的方式,結合腳本能夠靈活地制定出各類SpeedTest-Cli的使用場景。
speedtest-cli是一個python小工具,因此在安裝speedtest以前,建議先安裝好python2環境。
首先須要注意的是,只有用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.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
微信公衆號:測試生財(按期分享獨家內容和資源)