訪問伺服器變慢、丟包或者延遲高時,單純“感覺卡”很難定位問題。本文介紹常用的伺服器網路測速與路由追蹤工具:mtr、traceroute 用於檢視路由和丟包,iperf3、speedtest-cli 用於測試頻寬,並說明如何整理結果傳送給技術支援,適用於 Linux(Debian/Ubuntu、CentOS/Rocky/AlmaLinux)與 Windows。
Debian / Ubuntu:
apt update
apt install -y mtr-tiny traceroute iperf3 speedtest-cli
CentOS / Rocky / AlmaLinux(speedtest-cli 通過 pip 安裝):
dnf install -y mtr traceroute iperf3 python3-pip
pip3 install speedtest-cli
CentOS 7 請把 dnf 換成 yum。
mtr 結合了 ping 和 traceroute,會持續向每一跳發包並統計丟包率與延遲,是排查線路問題最有用的工具。
mtr -rwzbc 100 8.8.8.8
引數說明:-r 報告模式,-w 寬格式不截斷主機名,-z 顯示 ASN,-b 同時顯示 IP 和主機名,-c 100 傳送 100 個包。如果目標遮蔽 ICMP,可改用 TCP 探測:
mtr -rwc 100 -T -P 443 www.example.com
traceroute -n 8.8.8.8
traceroute -n -T -p 80 www.example.com
Windows 本地電腦可使用系統自帶命令(-d 不解析主機名)。pathping 會在追蹤後統計每跳丟包,效果類似 mtr:
tracert -d 203.0.113.10
pathping -n 203.0.113.10
iperf3 可以精確測試兩端之間的吞吐量,不受第三方測速節點影響。在伺服器上啟動服務端:
iperf3 -s
在另一台機器上作為客戶端連線(-P 4 表示 4 個併發流,-R 測試反方向):
iperf3 -c 203.0.113.10 -P 4 -t 30
iperf3 -c 203.0.113.10 -P 4 -t 30 -R
iperf3 預設使用 TCP 5201 埠,測試前請在防火牆放行,測試完成後按 Ctrl+C 關閉服務端。
speedtest-cli --secure
speedtest-cli --list | head -n 20
speedtest-cli --secure --server 12345
--list 可列出附近節點,再用 --server 指定節點 ID。測速結果受節點負載影響較大,建議多測幾個節點取參考值。
為了讓技術支援快速定位問題,請儘量提供雙向資料:從你本地到伺服器的 mtr(或 WinMTR / pathping),以及從伺服器到你本地公網 IP 的 mtr。可將結果儲存為文本:
mtr -rwzbc 100 你的本地公網IP > mtr-from-server.txt
提交工單時附上:伺服器 IP、你的本地公網 IP 與運營商、發生問題的時間段、上述測試的文本結果(儘量用文本而非截圖)。
如果最終目標沒有丟包,中間跳的丟包通常是該路由器不回應探測,可以忽略;只有從某一跳開始一直到終點都丟包,才說明線路有問題。
公共測速節點本身可能擁堵或限速。建議用 iperf3 在兩臺已知效能良好的機器間測試,並在不同時間段多次測量。
在變慢時段執行 mtr 並記錄時間,與正常時段的結果一起提交,便於對比定位擁堵節點。
如仍無法解決,可提交工單聯絡 IMIDC 7×24 技術支援,並附上上述測試結果。