某项目使用CDN做文件下载服务,最近不时有网友反馈下载出错,因为CDN是第三方提供的,且节点众多,所以诊断起来有点麻烦,必须想想招儿。
首当其冲的问题是如何确认CDN有哪些节点?
幸运的是通过阿里测提供的服务,我们能拿到这个IP列表,当然这个IP列表不可能百分百完整,不过应该包含了大部分的节点,有兴趣的可以参考百度的JQuery CDN例子。
需要说明的是阿里测偏重于测试国内的网络环境,如果你要测试的CDN偏重于国外的网络环境,可以考虑使用Just-Ping提供的服务。
有了工具网站,再搭配AWK之类的神器,很容易就能整理出IP列表,把它保存成一个名为ip.txt的文件,每行一个IP,稍后使用。接下来我们只要在所有的节点上下载同一个文件,就可以验证问题了,不过串行下载太慢,这里给一个利用xargs并发下载的例子:
shell> cat ip.txt | xargs -n 1 -P 0 -I {} \ wget -q -e http_proxy={} -O {} "http://url/to/file" &
最后看看文件散列是否一致就大功告成了:
shell> md5sum *
一旦知道了哪个节点有问题,可以利用淘宝IP地址库反查一下省市县地址是哪里,对照看看是否有临近地区的网友反馈,如果有的话,基本上就可以确诊了。
说明:例子中使用了百度提供的JQuery CDN,国内外常用的Javascript CDN如下:
- Upai Javascript CDN
- Sina Javascript CDN
- Baidu Javascript CDN
- Microsoft Javascript CDN
- Google Javascript CDN
平时多留意阿里测,Just-Ping,淘宝IP地址库这类工具网站,关键时候能帮你一把。