Linux實(shí)例網(wǎng)站訪問丟包延時(shí)高的排查方法
概述
當(dāng)網(wǎng)站訪問很慢或無法訪問時(shí),若已經(jīng)排除顯著的問題,而使用ping命令檢測(cè)到有明顯丟包時(shí),建議您做鏈路測(cè)試。Linux環(huán)境下,推薦優(yōu)先使用mtr命令行工具測(cè)試,或使用traceroute命令行工具進(jìn)行鏈路測(cè)試來判斷問題來源。通常情況下,鏈路測(cè)試步驟如下。
- 利用鏈路測(cè)試工具探測(cè)網(wǎng)絡(luò)狀況和服務(wù)器狀態(tài)。
-
根據(jù)鏈路測(cè)試結(jié)果分析處理。
詳細(xì)信息
- 如果您對(duì)實(shí)例或數(shù)據(jù)有修改、變更等風(fēng)險(xiǎn)操作,務(wù)必注意實(shí)例的容災(zāi)、容錯(cuò)能力,確保數(shù)據(jù)安全。
- 如果您對(duì)實(shí)例(包括但不限于ECS、RDS)等進(jìn)行配置與數(shù)據(jù)修改,建議提前創(chuàng)建快照或開啟RDS日志備份等功能。
- 如果您在阿里云平臺(tái)授權(quán)或者提交過登錄賬號(hào)、密碼等安全信息,建議您及時(shí)修改。
mtr命令行工具
mtr(My traceroute)幾乎是所有Linux發(fā)行版本預(yù)裝的網(wǎng)絡(luò)測(cè)試工具,集成了tracert與ping這兩個(gè)命令的圖形界面,功能十分強(qiáng)大。ping與tracert通常被用來檢測(cè)網(wǎng)絡(luò)狀況和服務(wù)器狀態(tài),具體說明如下。
命令名稱 | 具體說明 |
---|---|
ping | 送出封包到指定的服務(wù)器。如果服務(wù)器有回應(yīng)就會(huì)傳送回封包,并附帶返回封包來回的時(shí)間。 |
tracert | 返回從用戶的電腦到指定的服務(wù)器中間經(jīng)過的所有節(jié)點(diǎn)(路由)以及每個(gè)節(jié)點(diǎn)的回應(yīng)速度。 |
mtr默認(rèn)發(fā)送ICMP數(shù)據(jù)包進(jìn)行鏈路探測(cè),通過“-u”參數(shù)指定UDP數(shù)據(jù)包用于探測(cè)。相對(duì)于traceroute只做一次鏈路跟蹤測(cè)試,mtr會(huì)對(duì)鏈路上的相關(guān)節(jié)點(diǎn)做持續(xù)探測(cè)并給出相應(yīng)的統(tǒng)計(jì)信息。mtr能避免節(jié)點(diǎn)波動(dòng)對(duì)測(cè)試結(jié)果的影響,所以其測(cè)試結(jié)果更正確,建議優(yōu)先使用。
用法說明
mtr [-hvrctglspni46] [--help] [--version] [--report] [--report-cycles=COUNT] [--curses] [--gtk] [--raw] [--split] [--no-dns] [--address interface] [--psize=bytes/-s bytes] [--interval=SECONDS] HOSTNAME [PACKETSIZE]
示例輸出
[root@centos ~]# mtr 223.5.5.5 My traceroute [v0.75] mycentos6.6 (0.0.0.0) Wed Jun 15 23:16:27 2016 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. ??? 2. 192.X.X.20 0.0% 7 13.1 5.6 2.1 14.7 5.7 3. 111.X.X.41 0.0% 7 3.0 99.2 2.7 632.1 235.4 4. 111.X.X.197 0.0% 7 1.8 2.0 1.2 2.9 0.6 5. 211.X.X.25 0.0% 6 0.9 4.7 0.9 13.9 5.8 6. 211.X.X.70 0.0% 6 1.8 22.8 1.8 50.8 23.6 211.X.X.134 211.X.X.2 211.X.X.66 7. 42.X.X.186 0.0% 6 1.4 1.6 1.3 1.8 0.2 42.X.X.198 8. 42.X.X.246 0.0% 6 2.8 2.9 2.6 3.2 0.2 42.X.X.242 9. ??? 10. 223.5.5.5 0.0% 6 2.7 2.7 2.5 3.2 0.3
常見可選參數(shù)說明
- -r或--report:以報(bào)告模式顯示輸出。
- -p或--split:將每次追蹤的結(jié)果分別列出來,而非--report統(tǒng)計(jì)整個(gè)結(jié)果。
- -s或--psize:指定ping數(shù)據(jù)包的大小。
- -n或--no-dns:不對(duì)IP地址做域名反解析。
- -a或--address:設(shè)置發(fā)送數(shù)據(jù)包的IP地址。用于主機(jī)有多個(gè)IP的情況。
- -4:只使用IPv4協(xié)議。
- -6:只使用IPv6協(xié)議。
在mtr運(yùn)行過程中,您也可以輸入相應(yīng)字母來快速切換模式,各字母的含義如下。
- ?或h:顯示幫助菜單。
- d:切換顯示模式。
- n:切換啟用或禁用DNS域名解析。
- u:切換使用ICMP或UDP數(shù)據(jù)包進(jìn)行探測(cè)。
返回結(jié)果說明
默認(rèn)配置下,返回結(jié)果中各數(shù)據(jù)列的說明如下。
- 第一列(Host):節(jié)點(diǎn)IP地址和域名。按 n 鍵可切換顯示。
- 第二列(Loss%):節(jié)點(diǎn)丟包率。
- 第三列(Snt):每秒發(fā)送數(shù)據(jù)包數(shù)。默認(rèn)值是10,可以通過“-c”參數(shù)指定。
- 第四列(Last):最近一次的探測(cè)延遲。
- 第五、六、七列(Avg、Best、Worst):分別是探測(cè)延遲的平均值、最小值和最大值。
- 第八列(StDev):標(biāo)準(zhǔn)偏差。越大說明相應(yīng)節(jié)點(diǎn)越不穩(wěn)定。
traceroute命令行工具
traceroute是幾乎所有Linux發(fā)行版本預(yù)裝的網(wǎng)絡(luò)測(cè)試工具,用于跟蹤Internet 協(xié)議(IP)數(shù)據(jù)包傳送到目標(biāo)地址時(shí)經(jīng)過的路徑。traceroute先發(fā)送最大存活時(shí)間值(Max_TTL)的UDP探測(cè)數(shù)據(jù)包,然后偵聽從網(wǎng)關(guān)開始的整個(gè)鏈路上的ICMP TIME_EXCEEDED響應(yīng)。探測(cè)從TTL=1開始,TTL值逐步增加,直至接收到ICMP PORT_UNREACHABLE消息。ICMP PORT_UNREACHABLE消息用于標(biāo)識(shí)目標(biāo)主機(jī)已經(jīng)被定位,或命令已經(jīng)達(dá)到允許跟蹤的最大TTL值。traceroute默認(rèn)發(fā)送UDP數(shù)據(jù)包進(jìn)行鏈路探測(cè)??梢酝ㄟ^“-I”參數(shù)來指定發(fā)送ICMP數(shù)據(jù)包用于探測(cè)。
用法說明
traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [ -t TypeOfService ] [ -f flow ] [ -v ] [ -w WaitTime ] Host [ PacketSize ]
示例輸出
[root@centos ~]# traceroute -I 223.5.5.5 traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets 1 * * * 2 192.X.X.20 (192.X.X.20) 3.965 ms 4.252 ms 4.531 ms 3 111.X.X.41 (111.X.X.41) 6.109 ms 6.574 ms 6.996 ms 4 111.X.X.197 (111.X.X.197) 2.407 ms 2.451 ms 2.533 ms 5 211.X.X.25 (211.X.X.25) 1.321 ms 1.285 ms 1.304 ms 6 211.X.X.70 (211.X.X.70) 2.417 ms 211.138.114.66 (211.X.X.66) 1.857 ms 211.X.X.70 (211.X.X.70) 2.002 ms 7 42.X.X.194 (42.X.X.194) 2.570 ms 2.536 ms 42.X.X.186 (42.X.X.186) 1.585 ms 8 42.X.X.246 (42.X.X.246) 2.706 ms 2.666 ms 2.437 ms 9 * * * 10 public1.alidns.com (223.5.5.5) 2.817 ms 2.676 ms 2.401 ms
常見可選參數(shù)說明
- -d:使用Socket層級(jí)的排錯(cuò)功能。
- -f:設(shè)置第一個(gè)檢測(cè)數(shù)據(jù)包的存活數(shù)值TTL的大小。
- -F:設(shè)置不要分段標(biāo)識(shí)。
- -g:設(shè)置來源路由網(wǎng)關(guān),最多可設(shè)置8個(gè)。
- -i:使用指定的網(wǎng)卡送出數(shù)據(jù)包。用于主機(jī)有多個(gè)網(wǎng)卡時(shí)。
- -I:使用ICMP數(shù)據(jù)包替代UDP數(shù)據(jù)包進(jìn)行探測(cè)。
- -m:設(shè)置檢測(cè)數(shù)據(jù)包的最大存活數(shù)值TTL的大小。
- -n:直接使用IP地址而非主機(jī)名稱(禁用DNS反查)。
- -p:設(shè)置UDP傳輸協(xié)議的通信端口。
- -r:忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。
- -s:設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。
- -t:設(shè)置檢測(cè)數(shù)據(jù)包的TOS數(shù)值。
- -v:詳細(xì)顯示指令的執(zhí)行過程。
- -w:設(shè)置等待遠(yuǎn)端主機(jī)回包時(shí)間。
- -x:開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗(yàn)。
分析鏈路測(cè)試結(jié)果
以如下鏈路測(cè)試結(jié)果示例圖為基礎(chǔ)進(jìn)行闡述。
-
判斷各區(qū)域是否存在異常,并根據(jù)各區(qū)域的情況分別處理。
-
區(qū)域A:客戶端本地網(wǎng)絡(luò),即本地局域網(wǎng)和本地網(wǎng)絡(luò)提供商網(wǎng)絡(luò)。針對(duì)該區(qū)域異常,客戶端本地網(wǎng)絡(luò)相關(guān)節(jié)點(diǎn)問題,請(qǐng)對(duì)本地網(wǎng)絡(luò)進(jìn)行排查分析。本地網(wǎng)絡(luò)提供商網(wǎng)絡(luò)相關(guān)節(jié)點(diǎn)問題,請(qǐng)向當(dāng)?shù)剡\(yùn)營商反饋。
-
區(qū)域B:運(yùn)營商骨干網(wǎng)絡(luò)。針對(duì)該區(qū)域異常,可根據(jù)異常節(jié)點(diǎn)IP查詢歸屬運(yùn)營商,然后直接或通過阿里云售后技術(shù)支持,向相應(yīng)運(yùn)營商反饋問題。
-
區(qū)域C:目標(biāo)服務(wù)器本地網(wǎng)絡(luò),即目標(biāo)主機(jī)歸屬網(wǎng)絡(luò)提供商網(wǎng)絡(luò)。針對(duì)該區(qū)域異常,需要向目標(biāo)主機(jī)歸屬網(wǎng)絡(luò)提供商反饋問題。
-
-
結(jié)合Avg(平均值)和StDev(標(biāo)準(zhǔn)偏差),判斷各節(jié)點(diǎn)是否存在異常。
- 若StDev很高,則同步觀察相應(yīng)節(jié)點(diǎn)的Best和Worst,來判斷相應(yīng)節(jié)點(diǎn)是否存在異常。
-
若StDev不高,則通過Avg來判斷相應(yīng)節(jié)點(diǎn)是否存在異常。
注意:上述StDev高或者不高,并沒有具體的時(shí)間范圍標(biāo)準(zhǔn)。而需要根據(jù)同一節(jié)點(diǎn)其它列的延遲值大小來進(jìn)行相對(duì)評(píng)估。比如,如果Avg為30ms,那么,當(dāng)StDev為25ms,則認(rèn)為是很高的偏差。而如果Avg為325ms,則同樣的StDev為25ms,反而認(rèn)為是不高的偏差。
-
查看節(jié)點(diǎn)丟包率,若“Loss%”不為零,則說明這一跳路由的網(wǎng)絡(luò)可能存在問題。導(dǎo)致節(jié)點(diǎn)丟包的原因通常有兩種。
- 人為限制了節(jié)點(diǎn)的ICMP發(fā)送速率,導(dǎo)致丟包。
- 節(jié)點(diǎn)確實(shí)存在異常,導(dǎo)致丟包。
-
確定當(dāng)前異常節(jié)點(diǎn)的丟包原因。
-
若隨后節(jié)點(diǎn)均沒有丟包,說明當(dāng)前節(jié)點(diǎn)丟包是由于運(yùn)營商策略限制所致,可以忽略。如前文鏈路測(cè)試結(jié)果示例圖中的第2跳路由的網(wǎng)絡(luò)所示。
-
若隨后節(jié)點(diǎn)也出現(xiàn)丟包,說明當(dāng)前節(jié)點(diǎn)存在網(wǎng)絡(luò)異常,導(dǎo)致丟包。如前文鏈路測(cè)試結(jié)果示例圖中的第5跳路由的網(wǎng)絡(luò)所示。
說明:前述兩種情況可能同時(shí)發(fā)生,即相應(yīng)節(jié)點(diǎn)既存在策略限速,又存在網(wǎng)絡(luò)異常。對(duì)于這種情況,若當(dāng)前節(jié)點(diǎn)及其后續(xù)節(jié)點(diǎn)連續(xù)出現(xiàn)丟包,而且各節(jié)點(diǎn)的丟包率不同,則通常以最后幾跳路由的網(wǎng)絡(luò)的丟包率為準(zhǔn)。如前文鏈路測(cè)試結(jié)果示例圖所示,在第5、6、7跳路由的網(wǎng)絡(luò)均出現(xiàn)了丟包。所以,最終丟包情況,以第7跳路由的網(wǎng)絡(luò)的40%作為參考。
-
-
通過查看是否有明顯的延遲,來確認(rèn)節(jié)點(diǎn)是否存在異常。通過如下兩個(gè)方面進(jìn)行分析。
-
若某一跳路由的網(wǎng)絡(luò)之后延遲明顯陡增,則通常判斷該節(jié)點(diǎn)存在網(wǎng)絡(luò)異常。如前文鏈路測(cè)試結(jié)果示例圖所示,從第5跳路由的網(wǎng)絡(luò)之后的后續(xù)節(jié)點(diǎn)延遲明顯陡增,則推斷是第5跳路由的網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)了網(wǎng)絡(luò)異常。
注:高延遲并不一定完全意味著相應(yīng)節(jié)點(diǎn)存在異常,延遲大也有可能是在數(shù)據(jù)回包鏈路中引發(fā)的,建議結(jié)合反向鏈路測(cè)試一并分析。
-
ICMP策略限速也可能會(huì)導(dǎo)致相應(yīng)節(jié)點(diǎn)的延遲陡增,但后續(xù)節(jié)點(diǎn)通常會(huì)恢復(fù)正常。如前文鏈路測(cè)試結(jié)果示例圖所示,第3跳路由的網(wǎng)絡(luò)有100%的丟包率,同時(shí)延遲也明顯陡增。但隨后節(jié)點(diǎn)的延遲馬上恢復(fù)了正常。所以判斷該節(jié)點(diǎn)的延遲陡增及丟包是由于策略限速所致。
-
如果您有其他問題,可以聯(lián)系北京優(yōu)勝智連阿里云代理商,為您提供一對(duì)一專業(yè)全面的技術(shù)服務(wù),同時(shí)新/老阿里云會(huì)員,均可享受我公司代理商價(jià)格,歡迎咨詢!