對於一台伺服器,優質的線路能確保機器與本地網路連通的上限,由於網路環境的不同,同一台伺服器的表現可能有明顯差別,因此想要最好的體驗,必須在本地進行 網路測試 、綜合比較之下才能肯定,網路測試可以分為兩類:
- 瞬時的測試,包含延遲、丟包、Jitter(抖動)、上下行帶寬
- 長期的測試,可以從日、月、年的週期查看網路情況,包含延遲、丟包、Jitter(抖動)
下面是衡量網路情況的主要指標。
- 帶寬(Bandwidth),指的是在特定時間範圍內,從一點到另一點所能傳輸數據的最大速率,通常以比特每秒(bps)計量。較高的帶寬意味著可以傳輸更多的數據,對於數據密集型服務尤為重要。
- 吞吐量(Throughput),指在單位時間內成功傳輸的數據量,它受限於網路的帶寬和其它因素(比如錯誤率,指的是傳輸過程中由於噪聲、干擾等原因造成的錯誤數據包比率)。
上下行帶寬可以使用 iperf3 測試,或者使用操作更簡單的 LibreSpeed
- 延遲(Latency),延遲表示數據從源頭傳送到目的地所需的時間,常以毫秒(ms)來度量。較低的延遲對於需要實時反應的應用(如在線遊戲、語音或視頻通話等)至關重要。
- 往返時間(Round Trip Time, RTT),往返時間是一個數據包從發送者發送到接收者,再從接收者返回發送者所需的總時間。
- 丟包率(Packet Loss Rate),丟包率是指從發送端到接收端過程中丟失的數據包比例。高丟包率可能導致網路連接不穩定,影響數據傳輸的完整性。
- 抖動(Jitter),指延遲的變化量,即數據包到達時間的不一致性。
- 可用性(Availability),指網路能夠正常工作並提供服務的時間比率。高可用性意味著網路服務更加可靠,減少了停機時間。
延遲、丟包、抖動還是長期的數據更有價值,可以查看網路情況在一天中高峰期和低谷期的表現變化。可以使用 SmokePing 實現這一點。
根據具體的應用場景和需求,某些指標可能會比其他指標更加重要。例如,對於實時通訊,延遲和抖動的重要性要高於帶寬;而對於文件傳輸,帶寬和吞吐量則顯得更為重要。
iPerf3#
iPerf3 是專業的網路測試工具,它基於 TCP/IP 和 UDP/IP 協議,用以測量兩個網路節點之間 TCP 和 UDP 端口的網路帶寬,還能提供網路延遲、丟包率等統計信息。
iPerf3 在工作時,測試的兩端一方作為 Server,另一方為 Client。程序啟動的命令相同,通過不同的參數來區別以哪種工作方式運行。通常情況下先啟動 Server 端,使 iPerf 監聽在某個固定端口。然後在 Client 端執行相應的命令開始測試。
安裝#
在需要測試的兩台機器上分別安裝 iperf3。
所有平台的下載地址: iPerf - Download iPerf3 and original iPerf pre-compiled binaries
Windows 版的 iPerf 下載、解壓後可以直接在命令提示符下運行。
Linux
sudo apt-get install -y iperf3
會詢問,是否要作為守護進程,選否
這種命令在熟悉基本工作原理之後,不用搜索資料,直接看參數說明就夠用
iperf3 --help
iPerf3 服務端使用#
啟動 iperf3 服務
iperf3 --server -i 10 -p 19302
-s, --server
: 啟動 iperf3 以作為伺服器端運行-i 10
: 設置報告間隔為 10 秒,每 10 秒輸出一次測試結果-p 19302
: 指定使用的端口號為 19302。可以根據需要更改此端口號
不能同時為多個客戶端測
在後台運行,斷開 SSH 也可以使用
iperf3 --server -D -i 10 -p 19302 --logfile ./iperf.log
-D, --daemon
: 在後台以守護進程(daemon)模式運行 iperf3--logfile ./iperf.log
: 將 iperf3 的輸出日誌記錄到指定路徑下的文件./iperf.log
中
iPerf3 客戶端使用#
運行 iperf3 ,上傳數據到伺服器進行測試,運行 60 秒
iperf3 --client 192.168.1.51 -p 19302 -t 60 -f M -P 1 --get-server-output
-c, --client 192.168.0.18
: 連接到 IP 地址為 192.168.0.18 的伺服器。-p 19302
: 指定使用的端口號為 19302。-t 60
: 設置測試持續時間為 60 秒。-f M
: 將帶寬單位設置為兆字節(Mbps)。-P 1
: 使用 1 個並發連接進行測試。--get-server-output
: 獲取伺服器端的輸出信息。
實際使用中,我習慣先配置變量,再測試,這樣方便更改伺服器 IP 和端口
server_ip=52.16.84.15
server_port=19302
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 # 上傳到伺服器
這個命令與第一個命令類似,但是通過添加-R
參數,它執行反向測試,即從伺服器向客戶端進行上傳速度測試。
iperf3 -c ${server_ip} -p ${server_port} -t 60 -f M -P 1 -R # 從伺服器下載
-R
: 反向測試,即從伺服器向客戶端進行上傳速度測試。相當於 客戶端 下載時的速度
LibreSpeed#
使用瀏覽器檢測當前網路與 VPS 之間的下載速度、上傳速度、ping、Jitter(抖動),任何有瀏覽器的設備都可以使用。
DockerHub:adolfintel/speedtest - Docker Image | Docker Hub ,根據上面項目構建的
需要提前安裝 Docker,然後運行下面命令即可:
docker run -d -e MODE=standalone -p 88:80 -it --name speedtest adolfintel/speedtest:latest
訪問 http://ip_addr:88
通過瀏覽器測本機網路與伺服器網路的連接質量,將 ip_addr
替換為監控伺服器的地址。
測試完後,停止容器,然後刪除容器和鏡像(478MB,為什麼這麼大 (〝▼皿▼) )
docker stop speedtest && docker rm speedtest && docker rmi adolfintel/speedtest
SmokePing#
SmokePing 是一款強大而靈活的網路延遲監測工具,且可在網頁查看結果圖。AhFei 在「隨身伺服器」上安裝使用,不管去哪裡,都能檢測當前網路與 VPS 的網路狀況。
官方網站: SmokePing - About SmokePing (oetiker.ch)
GitHub: oetiker/SmokePing: The Active Monitoring System (github.com)
linuxserver 構建的 Docker 鏡像:
- GitHub: linuxserver/docker-smokeping (github.com)
- Dockerhub: linuxserver/smokeping - Docker Image | Docker Hub
不止是 Ping,SmokePing 實際能用很多工具測試網路,下面是常用的:
- FPing: 也就是 ping,用於測量 ICMP Echo 請求的延遲,是最常見和默認的 probe。
- EchoPingHttp: 與 FPing 類似,但它還可以測量 HTTP 請求的延遲。
- SSH: 用於通過 SSH 連接到遠程伺服器,並測量連接的延遲。SSH 也可能被阻斷,有時候 SSH 連不上,用的不是 22 端口,但網頁可以流暢打開。
- DNS: 用於測量 DNS 解析的延遲。
- SMTP: 用於測量發送 SMTP 郵件的延遲。
- TCP: 用於測量 TCP 端口的可用性和響應時間。
- cURL:HTTP、HTTPS、FTP 等,且有更多自定義設置,請求頭等。
- FPing6: IPv6。
單機模式#
安裝步驟: 網路延遲監測工具 SmokePing 的安裝與配置 - 技焉洲 (vfly2.com)
主從模式#
主從模式下,從端不啟動網頁介面,可以同步主端的配置,在主端可以看到從端的測試結果。
使用說明: 基於 LinuxServer 鏡像的 SmokePing 主從模式指南 - 技焉洲 (vfly2.com)
下面第二個
from Home to vfly2
就是部署在家庭伺服器上的從 smokeping 監測的數據
原文鏈接: https://technique.vfly2.com/2023/07/vps-network-testing-long-term-monitoring/
版權聲明:本博客所有文章除特別聲明外,均為 AhFei 原創,採用 CC BY-NC-SA 4.0 許可協議。轉載請注明來源 技焉洲 (technique.vfly2.com) 。
保持更新 ٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的實用技能,歡迎使用 RSS 訂閱,或在支持 ActivityPub 的平台關注 @[email protected]
接收新文章的推送,如果能留言互動就更好了。