cURL が wget より遅いのはなぜですか

cURL が wget より遅いのはなぜですか

テストページ: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 が有効になっていますが、その Web サイトには IPv6 レコードがありません。すべてのテストは 1 分強で、何かがタイムアウトしているようです。

Google へのリクエストは高速です:

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

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

IPv4 を強制するために cURL に「-4」パラメータを追加しても何も変わらないようです。

原因は何でしょうか?

答え1

tcpdump2 番目のタブで CURL と wget を使用してサイトを取得するときに接続がどのように機能するかを調べるために、ポート 53 UDP を使用します。

通常の原因は IPv4/IPv6 の競合によって発生しますが、sysctl で IPv6 を無効にするか、single-request-reopen オプションを追加することで修正できます/etc/resolv.conf

関連情報