为什么cURL比wget慢


1

测试页面: https://www.beobank.be/nl/Home.aspx

这是使用wget(或真正的浏览器)的结果:

# time wget https://www.beobank.be/nl/Home.aspx -O /dev/null
--2015-01-26 12:05:46--  https://www.beobank.be/nl/Home.aspx
Resolving www.beobank.be (www.beobank.be)... 62.213.211.94
Connecting to www.beobank.be (www.beobank.be)|62.213.211.94|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33444 (33K) [text/html]
Saving to: `/dev/null'

100%[======================================================================================================================================================>] 33,444      --.-K/s   in 0.05s   

2015-01-26 12:05:47 (670 KB/s) - `/dev/null' saved [33444/33444]


real    0m1.327s
user    0m1.072s
sys     0m0.060s

这是使用curl的结果:

# time curl https://www.beobank.be/nl/Home.aspx &>/dev/null

real    1m0.741s
user    0m0.012s
sys     0m0.012s

OS X似乎没有那个问题(cURL很快)。 这只发生在Linux上,就我可以测试而言。所有机器(我已尝试过几台)都是基于Debian的(运行最新软件)并启用了IPv6,但该网站没有IPv6记录。 所有的测试都超过1分钟 - 这似乎是暂时的?

对Google的请求很快:

# time curl https://www.google.com/ &>/dev/null

real    0m0.550s
user    0m0.020s
sys     0m0.012s

将“-4”参数添加到cURL以强制IPv4似乎没有任何改变。

可能是什么原因?


我实际上不知道,但我猜它是因为卷曲的结构与wget相比,默认情况下wget在os上并且比curl更简单,而curl更复杂并且用于更复杂的工作......
TechLife

4
我尝试了这些测试并得到了SSL错误,这可能是一个线索:也许 curl 尽管在我的情况下,花费更多的时间重试以尝试解决错误 wget 也花了大约一分钟,并给出了一个错误。 curl 的消息提供了更多信息: curl: (35) Unknown SSL protocol error in connection to www.beobank.be:443。因为你重定向了 stderr 你会错过错误 - 再试一次没有重定向。我的测试是在Ubuntu 14.10上完成的。
AFH

@TechLife那真的没有意义。必须有一个原因需要1分钟才能发生事情并继续下去。
Tuinslak

你需要使用 wireshark 或类似的了解更多。
AFH

1
谢谢@AFH我现在看到了。它确实完全失败,根本不会获取任何数据。奇。
Tuinslak

Answers:


0

在端口53 UDP上使用tcpdump,以便检查通过CURL和第二个选项卡中的wget获取站点时连接的工作方式。 通常的原因是由ipv4 / v6冲突引起的,可以通过在sysctl中禁用ipv6或在/etc/resolv.conf中添加single-request-reopen选项来修复

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.