ちょっとVagrantのことで調べ物していたところ、こんな記事を見つけました。
http://www.kunitake.org/chalow/2012-11-02-1.html
まとめると、CentOS5系の名前解決とCentOS6系からの名前解決のIPv4とIPv6の結果について、応答の順番が変わることで、名前解決に時間がかかる場合があるということです。
CentOS5系はAAAAレコード(IPv6)の要求を実行して、応答結果を受けて、その後にAレコード(IPv4)の要求->応答だったようです。
しかしCentOS6系からはAレコードとAAAAレコードを投げて、その後にそれぞれの要求が返ってくるようです。
しかし、Firewallの中には同じポートのクエリを同じセッションとみなして、IPv6が設定されていないサーバーへの応答ができないことで、IPv4の応答も返さず、Aレコードのクエリを再送するということらしいです。
なにはともわれ、検証してみることにします。
◆オプションをつける前
# cat /etc/redhat-release <–CentOS6系であることを確認
CentOS release 6.7 (Final)
# cat /etc/resolv.conf <–まずはオプション無し
nameserver 8.8.8.8
nameserver 8.8.4.4
# yum clean all <–キャッシュを削除
# time yum search php54 –enablerepo=epel,repo <–PHPを検索
※3回ともyum clean allを実施
[1回目]
real 0m9.618s
user 0m2.430s
sys 0m0.215s
[2回目]
real 0m6.825s
user 0m2.435s
sys 0m0.244s
[3回目]
real 0m9.713s
user 0m2.430s
sys 0m0.209s
◆オプションをつけた後
# echo “options single-request-reopen” » /etc/resolv.conf
# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
options single-request-reopen
[1回目]
real 0m9.984s
user 0m2.462s
sys 0m0.191s
[2回目]
real 0m9.751s
user 0m2.452s
sys 0m0.199s
[3回目]
real 0m9.676s
user 0m2.465s
sys 0m0.205s
残念ながら上記検証では効果は得られませんでした。
いくつかサイトを見たところ、juniper配下のサーバーでこの事象に遭遇したと記載があるので、juniper相手などには効果があるかもしれません。
また、さくらのVPSではデフォルトでオンになっていました。
# cat /etc/resolv.conf
# Generated by NetworkManager
search sakura.ne.jp
nameserver 210.224.163.3
options single-request-reopen
入れてデメリットになることは少ないと思うので、CentOS6以降は標準で設定すると良いかもしれません。