为什么我的网站间歇性加载缓慢,似乎是由于DNS问题?

我正准备把这头发拉出来。 我有一个在Heroku上托pipe的应用程序,使用Zerigo免费的DNS。 该应用程序可在:

  • smartvark.com (首选)
  • www.smartvark.com (有些用户坚持打www,这个redirect去除www)
  • smartvark.heroku.com(没有提供给用户,但可能在排除故障时比较有用)

用户间歇性地(大约50个左右请求)经历了非常长的加载时间(〜2分钟),并且当我尝试通过观看我的服务器日志进行分类时,他们的请求似乎不会等到等待期结束。 典型的加载时间为200-400ms。 我正在使用NewRelic,并没有指出任何服务器负载的问题,虽然它拿起了信标的最终用户问题,并把这次图表作为“networking”。

使用Firebug和Chrome devtools我可以看到在我的机器上发生这种情况的时间表,并且在Firebug将其分类为“DNS查找”并且Chrome似乎没有分类的响应之前,它们都显示了很长的等待时间。 第一个响应发生后,网站的其他部分加载非常快。

我会猜测这是因为您的DNS提供商(zerigo.net)正在为其DNS服务器发布IPV6logging。 您的Windows和MAC客户端正在使用启用了IPV6的DNS服务器,但没有IPV6连接。 这会导致DNS超时,尝试通过IPV6访问DNS服务器,然后再回到IPV4。 尝试closuresDNSparsing器和客户端计算机上的IPV6,并查看是否获得更好的结果。

原来问题是Heroku分配的三个循环IP地址之一是不好的。 他们根据我的支持请求计算了这一点。 感谢大家为您提供的方法和工具的追求!

对于遇到这个问题的其他人,这有助于解释:

http://tiwatson.com/blog/2011-2-17-heroku-no-longer-using-a-global-request-queue

Heroku不使用全局请求队列,所以一个长时间运行的请求可以回锁快速运行的请求。