プログラム上でdigコマンドを使って、情報を取得するという実装をした時に発生した現象です。とにかくネットワークの速度が遅く、使い物になりませんでした。OSはCentOS6.5でした。
■digコマンドが遅い
症状としてとにかく、digコマンドの完了がおそい!30秒くらいかかっていたのです。普通にローカル上だと2秒くらい出終わっていたので、10倍時間がかかっていました。
■原因
どうやら、ipv6のIPアドレスの指定が問題だったようです。
CentOS6辺りからIPv6がデフォルトで設定されうようになっているようです。そのVPSでは、ネットワークがIPv6に対応していませんでした。そのため、IPv6がサーバで有効になっていることで、問題が発生していました。
以下の様な動きになっていました。
・IPv6でまず検索
・IPv6タイムアウトまで待つ
・ipv4で次に検索
というわけでIPv6を無効にしたら、数値が正常になりました。
■digコマンド以外でも遅くなる
dig以外にも、nslookupとか普通のhttpアクセスでもIPv6ネットーワークが正しく構築されていないと、同様の原因で遅くなることがあります。無効にするには、サーバ全体の再起動がいるので、構築時に対応してまいましょう。
無効の手順はこちらです。
ちゃんとIPv6対応のネットワークが構築されているばあいは、特に問題ありません。ネットワークが遅いなー、と感じる時は一度確認してみてください。
では。