CentOS 7 上使用 curl 和 wget 时响应缓慢

CentOS 7 上使用 curl 和 wget 时响应缓慢

我的问题是,我无法弄清楚为什么使用 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

相关内容