一次由DNS解析引起的访问缓慢问题

  • 2017-07-04
  • 0
  • 0

嗯….其实这个问题很低级….却动用了一堆工具来分析,还费了一些时间…..结果也是真鸡儿丢人,但是也吸取了蛮多教训~

问题描述:易转2.0生产环境API首次访问异常缓慢,大概15秒-20秒,随后访问速度飞快没有问题,但是过一段时间后,再次访问api会再次发生这个问题

分析过程:

1.首先怀疑的是客户端的问题,导致程序处理过久,但是最后debug发现,程序都是卡在httpclient发送请求上…所以代码问题基本是可以排除的

2.那么http问题的话,这就好说了,首当其冲的怀疑是不是代理的问题,然后各种把代理给禁用了,问题依旧。

代理这里我是高度怀疑的,因为我以前吃过代理的亏,而且我本机装有ss,所以非常怀疑代理,甚至是各种方案都用了以后,我甚至都怀疑了是不是遇到了C#的bug什么的….

3.怀疑代理,但是处理措施无效,那你也还得继续下去啊不是吗~那么有没有可能是服务端引起的问题呢~还真可能!于是开了nginx的详细日志查询,依旧没有结果!排查见过显示,刚开始访问那一刻,nginx根本没有收到请求,直到15秒左右才接受到请求,并顺利处理…响应都是木有毛病的

到这里,我真的是有点摸不着头脑了….于是我又更加怀疑是代理的问题,但是找了一台干净的机器来尝试也是这样,后来问了好几个小伙伴,得到的反馈也的确是,首次打开的速度特别慢!所以我就想我需要更加深入的排查~

首先冷静下来,看看chrome的给出的耗时分析

大部分耗时都消耗在了Inital Connection,根据Google的描述,这个初始化连接并不包括处理代理的时间,问题来了,如果不是代理问题,又不是服务端问题,那么还会是什么问题?

这个时候,只能祭出大杀器了~使用chrome://net-internals来进行底层分析~

捕获后,把log拿来分析,很明显的卡在了建立连接上…..然而nginx并没有错误啊….

咦!等等!我好像….发现了什么…..address_list有两个不一样的ip????

好像第一个ip很眼熟啊!好像在哪里见过????

这不是我之前那台服务器的ip吗!怎么还会出现?

于是登录到了域名解析面板一看,原来在之前这个域名我曾经使用过,并且解析在旧服务器上

但是我后面有一段时间不用这个域名后,又有新加记录,所以导致我没看到这个域名,添加解析的时候,有没提醒…..

当访问API时候,连接到的是旧服务器,因为旧服务器不在了,自然超时,才会访问下一个ip了~

删除原先的解析后,速度恢复正常,飞快….

是不是很无语…..2333333

所以,不要忽略任何一个细节,不然可能会让你崩溃~也不要太觉得小项目会遇到平台bug,哪有这么容易遇到的…..

评论

还没有任何评论,你来说两句吧