我的问题是,我无法弄清楚为什么使用 curl 和 wget 时响应时间如此缓慢。我说的缓慢,是指一个页面至少需要五六秒,而这个页面应该只需要一秒或更短的时间。
我已经测试了各种各样的场景,但似乎根本没有发现任何区别。
我的服务器是:CentOS Linux 版本 7.3.1611(核心)
我正在尝试修复这个问题,因为它会减慢新安装的 WordPress 应用程序的速度。我最终(使用 Xdebug)发现,问题不是出在 WP 上,而是出在使用 curl 的 PHP 调用上。随后,我一直在命令行上进行测试,没有使用任何其他应用程序。
例如:
$ curl -o /dev/null "http://techrepublic.com"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 178 100 178 0 0 30 0 0:00:05 0:00:05 --:--:-- 41
URL 是什么并不重要,但如果我使用IP 地址,而不是域名,那就完全没有问题了。
使用 wget 也会遇到同样的问题。
因此,我尝试过的一些方法如下:
- a)更改 /etc/resolv.conf 中的 DNS 服务器
- b)与 curl 和 wget 效果相同
- c) 与 http 和 https 效果相同
- d)重页面和轻页面效果相同
- e) 在 Windows 10 上使用 curl 进行测试,在同一网络、同一路由器等,大约需要一秒钟或更短的时间
- f) 以普通用户和 root 身份进行测试
我的主 DNS 服务器现在在 /etc/resolv.conf 中列为 8.8.8.8,这应该没问题。
为了获取更多信息,我还使用了这个:
$ curl -L --output /dev/null --silent --show-error --write-out 'lookup: %{time_namelookup}\nconnect:%{time_connect}\nappconnect:%{time_appconnect}\npretransfer:%{time_pretransfer}\nredirect:%{time_redirect}\nstarttransfer: %{time_starttransfer}\ntotal:%{time_total}\n' 'techrepublic.com'
Output:
lookup: 5.514
connect:5.528
appconnect:0.000
pretransfer:5.528
redirect:5.819
starttransfer: 6.680
total:12.552
(不确定为什么,但以这种方式使用 curl 似乎比不使用所有选项花费的时间更长,但无论哪种方式,它仍然花费太长时间)
所以,我猜想这在某种程度上与 DNS 查找有关,但我真的不知道还能尝试什么。这非常令人沮丧。
任何帮助都将不胜感激。谢谢!
答案1
好的,问题解决了。在再次浏览网络以查找类似问题后,我找到了这个网站,它描述了同样的问题:
http://aarvik.dk/disable-ipv6/
在 /etc/resolv.conf 的底部添加以下行可以解决这个问题,但我建议您完整阅读文章:
options single-request-reopen