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

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

我快要被这个问题搞疯了。我在 Heroku 上托管了一个 Rails 应用,使用 Zerigo Free 进行 DNS。该应用的网址为:

  • smartvark.com(首选)
  • www.smartvark.com(有些用户坚持输入 www,此重定向会删除 www)
  • smartvark.heroku.com(未提供给用户,但可能有助于在故障排除时进行比较)

用户会间歇性地(每 50 个请求中就有 1 个)遇到极长的加载时间(约 2 分钟),当我尝试通过查看服务器日志进行分类时,他们的请求似乎直到等待期结束才命中。该网站的典型加载时间很快,约为 200-400 毫秒。我正在使用 NewRelic,它没有显示任何服务器负载问题,尽管它通过其信标捕获最终用户问题并将这次标记为“网络”。

使用 Firebug 和 Chrome devtools,我能够看到这种情况在我的计算机上发生的时间线,它们都显示在任何响应之前需要等待很长时间,Firebug 将其归类为“DNS 查找”,而 Chrome 似乎没有将其归类。第一次响应发生后,网站的其余部分加载速度非常快。

答案1

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

答案2

事实证明,问题在于 Heroku 分配的三个循环 IP 地址中有一个是坏的。他们根据我的支持请求解决了这个问题。感谢大家提出的解决此问题的方法和工具建议!

答案3

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

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

Heroku 不使用全局请求队列,因此单个长时间运行的请求可能会锁定快速运行的请求。

相关内容