wgetが遅い場合の対処法

wgetはデフォルトではIPv6を優先して使用します。

[参考記事] Wgetの基本的な使い方など
[参考記事] WgetがFTPでダウンロードできない場合
[参考記事] WgetがSSLでダウンロードできない場合

$ wget ftp://www.example.com/test.txt
--2014-07-24 02:01:52--  ftp://www.example.com/test.txt
           => `test.txt'
www.example.com をDNSに問いあわせています... xxxx:xxx:xx::xx, xxx.xxx.xxx.xxx
www.example.com|xxxx:xxx:xx::xx|:21 に接続しています... 失敗しました: 接続を拒否されました.
www.example.com|xxx.xxx.xxx.xxx|:21 に接続しています... 接続しました。

このためIPv6が使用できない回線では、IPv6の試行失敗を待ってIPv4に接続しに行くため遅くなります。
wgetの処理を早くするには、『--inet4-only』オプションを使用してIPv4のみにします。

$ wget --inet4-only ftp://www.example.com/test.txt
または
$ wget -4 ftp://www.example.com/test.txt

wgetコマンドの出力からもわかるようにLinuxではDNS情報をキャッシュしていません。
このためwget取得のごとにDNSサーバに名前問い合わせをしています。
サーバ内部にDNSキャッシュサーバを設置することで、同じドメインに頻繁にアクセスする場合にはwgetを早くすることができます。
ただし普通は100ms程度で名前解決ができるので、回線が遅い場合やDNSサーバが遅い場合でない限りはあまり効果はありません。
内部にDNSキャッシュサーバを作成するにはbindが使えますが、簡易にDNSキャッシュサーバを立てたいという場合にはdnsmasqなどもあります。

またhostsにドメインとIPを記載して、DNSの問い合わせ自体をしないという方法もありますが、IPアドレスが変わった時には対応できません。

関連記事

スポンサーリンク

register_resource() リソースプラグインを動的に登録します

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る