记录一次海外图片加载不出来的排查

前言

在这次项目中我们遇到这样的情况,在国内访问迪拜阿里云服务器的图片慢,且加载有点像断片的感觉

在这里插入图片描述

一开始我们通过各种找借口,想出各种理由来为这个慢做狡辩

  1. 我们是访问国外服务器,访问慢是正常的
  2. 我们使用的是海外加速,国内并没加速,国内慢是正常的
  3. 国内网速环境过慢,访问不会快的

后面我们收到反馈说国外的图片也是加载特别慢,经常卡住的感觉,于是我们开启了对图片的专项优化

发现问题

我们首先是梳理了下图片访问的整个网络的访问链路,寻找问题到底出现在哪个环节

在这里插入图片描述

从时序图上看,其实是很简单的一个网络访问,似乎看上去并没有问题,大家都觉得自己的代码没问题

  1. 从客户端看,客户端做了那么多项目,都是用Glide去加载图片,不可能会出现这种问题
  2. 从服务器看,服务器用的是阿里云的服务器,本身并没有开发业务逻辑,难道阿里云会出问题吗

于是我们从时序图分析,最大的怀疑点就在服务商的DNS出现问题,那么这块我们要怎么去分析呢,我们部署了一台离迪拜比较近的服务器,通过这台服务器去访问迪拜阿里云的服务器看看是什么情况

1、traceroute迪拜阿里云

我们直接通过traceroute命令去访问迪拜阿里云解析出来的链接,发现域名解析出现100ms的情况和超时的情况

在这里插入图片描述

2、traceroute谷歌

通过traceroute命令去访问谷歌,却发现一切正常,那么这个时候,我们就断定DNS似乎出现了问题

在这里插入图片描述

3、解决问题

  1. 接入公司自己DNS服务器去解析IP,放弃了当前运营商DNS服务器的解析,此时的解析速度几乎是1-10ms的级别
  2. 如果公司没有DNS服务器,可以自己搭建一套DNS服务器,和DNS的SDK,访问服务器拿到对应的IP

拓展

1、DNS

DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的去访问互联网而不用去记住能够被机器直接读取的IP地址,通过域名,最终得到该域名对应的IP地址的过程则是域名解析的过程

2、DNS解析

递归查询:由客户端发起请求,服务器之间互相递归查询,直到查到IP为止,类似于责任链模式

在这里插入图片描述

迭代查询:由客户端逐个发起请求,逐个去对应的服务器查询IP,直到有IP返回为止

在这里插入图片描述

在DNS查询过程中,客户端和服务器也都会加入缓存的机制,这样可以减少查询的次数,加快域名解析过程。当我们在浏览器中输入一个网站时,会发生如下过程:

  1. 浏览器中输入想要访问的网站的域名,操作系统会先检查本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析
  2. 如果hosts里没有这个域名的映射,客户端会向本地DNS服务器发起查询。本地DNS服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析
  3. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置,采用递归或者迭代查询,直至解析完成
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许英俊潇洒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值