問題
這兩天ffmpeg推流的同事反應伺服器
推送視訊流到A直播雲
的直播播放某個時間段經常卡頓
排查
mtr的使用在末尾
同一臺伺服器將視訊流分別推送到
B雲直播
、A直播雲
對比播放流暢度,B直播雲
播放流暢,判斷:問題不在推流伺服器將問題反饋給
A直播雲
,A直播雲答覆:推送不穩定排查對比
推流伺服器
與A直播雲
、B直播雲
的網路聯通性- A直播雲
mtr a.ar414.com
- B直播雲
mtr b.ar414.com
- A直播雲
排查結論
推流伺服器
與A直播雲
的鏈路異常,鏈路繞到國外才回國,丟包率與延遲率較高推流伺服器
與B直播雲
的鏈路正常,丟包率與延遲率總體較低
解決
將mtr排查報告反饋至A直播雲讓其調整路由鏈路
mtr
網路聯通性判斷工具,它可以結合 ping nslookup tracert 來判斷網路的相關特性,這個命令就是 mtr。mtr 全稱 my traceroute,是一個把 ping 和 traceroute 合併到一個程式的網路診斷工具
安裝
- Linux
# Ubuntu $ apt install mtr # CentOS $ yum install mtr
- Windows
免安裝包:github.com/oott123/WinMTR/releases
使用
根據實際業務進行測試 比如我這邊測的是推流則需要指定包大小及tcp協議
$ mtr ar414.com
引數說明:
- Host:鏈路IP地址
- Loss:丟包率
- Snt:已傳送資料包數
- Last:最後一個包的延時
- Avg:平均延時
- Best:最低延時
- Wrst:最差延時
- StDev:穩定性
命令選項
- -r
- 使用-r:預設向目標地址傳送10個ICMP包 然後直接列印報告
- 不使用-r:動態執行不斷向目標地址傳送ICMP包
- -s 指定傳送每個資料包大小(bytes)
- 使用-r:預設向目標地址傳送10個ICMP包 然後直接列印報告
- -c 指定傳送包數量
- -i 指定傳送資料包的間隔(秒)
- --tcp 指定傳送tcp包
- --udp 指定傳送udp包
結果分析
鏈路分析:
- 自建機房
- 一般情況下前幾跳都是區域網內路由,如果異常則自行排查或上報機房運維
- 中間跳數則是中間節點,如果異常則聯絡
運營商
- 後幾跳則是服務提供商,如果異常聯絡服務提供商
- 雲伺服器
- 前中的鏈路異常則聯絡雲伺服器商,一般提交工單
- 後幾跳異常則聯絡服務提供商
丟包率
- 還有很多時候問題是在資料包返回途中發生的,資料包可以成功的到達目的主機,但是返回過程中遇到 “困難” 了。所以,當問題發生後,我們通常需要收集反方向的 MTR 報告 結合正反向MRT排查報告進行判斷
- 網路延遲
- 因為是不同的位置,延遲通常會隨著條數的增加而增加。所以,延遲通常取決於節點之間的物理距離和線路質量。
- 高延遲並不一定意味著當前路由器有問題。延遲很大的原因也有可能是在返回過程中引發的。從這份報告的截圖看不到返回的路徑,返回的路徑可能是完全不同的線路,所以一般需要進行雙向 MTR 測試
本作品採用《CC 協議》,轉載必須註明作者和本文連結