如何診斷CDN故障?
某項(xiàng)目使用CDN做文件下載服務(wù),最近不時(shí)有網(wǎng)友反饋下載出錯(cuò),因?yàn)镃DN是第三方提供的,且節(jié)點(diǎn)眾多,所以診斷起來(lái)有點(diǎn)麻煩,必須想想招兒。
首當(dāng)其沖的問(wèn)題是如何確認(rèn)CDN有哪些節(jié)點(diǎn)?
幸運(yùn)的是通過(guò)阿里測(cè)提供的服務(wù),我們能拿到這個(gè)IP列表,當(dāng)然這個(gè)IP列表不可能百分百完整,不過(guò)應(yīng)該包含了大部分的節(jié)點(diǎn),有興趣的可以參考百度的JQuery CDN例子。
需要說(shuō)明的是阿里測(cè)偏重于測(cè)試國(guó)內(nèi)的網(wǎng)絡(luò)環(huán)境,如果你要測(cè)試的CDN偏重于國(guó)外的網(wǎng)絡(luò)環(huán)境,可以考慮使用Just-Ping提供的服務(wù)。
有了工具網(wǎng)站,再搭配AWK之類的神器,很容易就能整理出IP列表,把它保存成一個(gè)名為ip.txt的文件,每行一個(gè)IP,稍后使用。接下來(lái)我們只要在所有的節(jié)點(diǎn)上下載同一個(gè)文件,就可以驗(yàn)證問(wèn)題了,不過(guò)串行下載太慢,這里給一個(gè)利用xargs并發(fā)下載的例子:
shell> cat ip.txt | xargs -n 1 -P 0 -I {} \ wget -q -e http_proxy={} -O {} "http://url/to/file" &
最后看看文件散列是否一致就大功告成了:
shell> md5sum *
一旦知道了哪個(gè)節(jié)點(diǎn)有問(wèn)題,可以利用淘寶IP地址庫(kù)反查一下省市縣地址是哪里,對(duì)照看看是否有臨近地區(qū)的網(wǎng)友反饋,如果有的話,基本上就可以確診了。
說(shuō)明:例子中使用了百度提供的JQuery CDN,國(guó)內(nèi)外常用的Javascript CDN如下:
- Upai Javascript CDN
- Sina Javascript CDN
- Baidu Javascript CDN
- Microsoft Javascript CDN
- Google Javascript CDN
平時(shí)多留意阿里測(cè),Just-Ping,淘寶IP地址庫(kù)這類工具網(wǎng)站,關(guān)鍵時(shí)候能幫你一把。