为什么 cURL 比 wget 慢

Tui*_*lak 5 performance wget curl

测试页面: 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
Run Code Online (Sandbox Code Playgroud)

这是使用curl 的结果:

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

real    1m0.741s
user    0m0.012s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

将“-4”参数添加到 cURL 以强制使用 IPv4 似乎不会改变任何内容。

可能是什么原因?

小智 0

在端口 53 UDP 上使用tcpdump,以便检查当您在第二个选项卡中通过 CURL 和 wget 获取站点时连接如何工作。

通常的原因是由于 IPv4/IPv6 冲突引起的,可以通过在 sysctl 中禁用 IPv6 或在/etc/resolv.conf.