在我本地的 Ubuntu 10.04 开发机上,如果我对网址执行 wget,例如“wgethttp://www.google.com“,它会停留在“解析 www.google.com”上长达 30 秒,然后才会收到响应。如果我在浏览器中输入 www.google.com,响应几乎是即时的。
我在 python 中使用 urllib.urlopen() 以及在 php 中使用 file_get_contents() 也有类似的经历。
我想修复此问题的原因是为了测试在本地开发机器上访问 Web 服务的代码(Web 服务请求似乎总是需要长达 30 秒的时间,这使得开发变得缓慢而痛苦)
有什么线索可以说明是什么原因造成的?我该如何诊断问题?
答案1
Google 发现许多报告称 Ubuntu 10.4 存在 DNS 超时问题,因为它使用了 ipv6(而您的网络的其余部分没有使用,因此您需要等待 ipv6 查找超时)。
这也许可以解释为什么如果您的浏览器配置为不使用 ipv6 进行名称解析,那么它的运行速度会更快。
答案2
30 秒的延迟听起来像是 DNS 超时,因此请检查 /etc/resolv.conf(尤其是第一个命名的 DNS 服务器)。