web-dev-qa-db-ja.com

外部DNSルックアップのパフォーマンスをベンチマークするにはどうすればよいですか?

ネットワークの外部DNSとしてGoogleのパブリックDNSサーバーを検討しています。現在、ISPのDNSサーバーを使用しています。私も過去にOpenDNSを検討したことがありますが、最終的にはジャンプしないことにしました。

それぞれのサーバーがDNSリクエストを処理できる速度をベンチマークできるようにしたいと思います。 nslookupに役立つと思われるものは何もありません。

外部から提供されたDNSの往復時間をテストするにはどうすればよいですか?

14
Mike L

パケットキャプチャプログラム(DNSのフィルタリング)を使用して、DNSクエリ/応答時間を追跡できます。これは、マシンまたは内部DNSサーバー(ある場合)で実行できます。すべてがほぼ同じであるので、これにより、Google DNSがISPと比較される速さの概算がわかります。

5
joeqwerty

単にDiggrep

$ Dig @8.8.8.8   www.rimuhosting.com | grep "Query time:"
;; Query time: 15 msec
$ Dig @4.2.2.1   www.rimuhosting.com | grep "Query time:"
;; Query time: 289 msec
40
Pascal

GRCの ドメイン名速度ベンチマーク を使用します。

13
nrgyz

namebench -GoogleのオープンソースDNSベンチマークユーティリティも見てみました。それは非常に包括的でした。

3
Mike L

OpenDNSとGoogleDNSの間でいくつかの基本的なベンチマークを行いました。結果は、OpenDNSオファリングがGoogleのDNSサービスよりも一貫して高速であることを示唆しています。

http://ajclark.wordpress.com/2009/12/04/google-dns-vs-opendns-performance-comparison/

2
ajclark

DNSサーバーへの接続を評価するために、Niceスクリプトを少し書きました。

cat >test_dns_list_speed.sh
#!/usr/bin/env ksh
site="www.google.com"
IPfile="$1"
samples=$2

if [ ! -f "$IPfile" ] || ! echo "$samples"|egrep -q "[0-9]+" ; then
  echo "test_dns_list_speed.sh <file-ip-list> <samples>"
  echo "<file-ip-list>       newline separated list of DNS server IP adresses"
  echo "<samples>            how many DNS resolution samples to take"
  echo "PURPOSE:"
  echo "          collect statistics about response times from list of DNS servers"
  exit 1
fi

typeset -i i

while [ $i -lt $samples ]; do
  i=$i+1
  for IP in `cat $IPfile`; do
    time=`Dig @$IP $site| awk '/Query time:/ {print " "$4}'`
    IPtrans=`echo $IP|tr \. _`
    eval `echo result$IPtrans=\"\\$result$IPtrans$time\"`
  done
done

for IP in `cat $IPfile`; do
  IPtrans=`echo $IP|tr \. _`
  printf "%-15s " "$IP"; echo -e `eval "echo \\$result$IPtrans"`|tr ' ' "\n"|awk '/.+/ {rt=$1; rec=rec+1; total=total+rt; if (minn>rt || minn==0) {minn=rt}; if (maxx<rt) {maxx=rt}; }
             END{ if (rec==0) {ave=0} else {ave=total/rec}; printf "average %5i     min %5i     max %5i ms %2i responses\n", ave,minn,maxx,rec}'
done

./test_dns_list_speed server_list 20
202.93.142.10   average   949     min   523     max  2229 ms 20 responses
202.93.142.20   average   897     min   515     max  2017 ms 20 responses
208.67.222.222  average  1235     min   530     max  3362 ms 20 responses
8.8.8.8         average   759     min   529     max  1624 ms 20 responses
2
PeZa

Firebugプラグイン for FirefoxおよびIEには、すべてのファイル要求のロード時間をグラフィック表示する「ネット」タブがあります。

緑色で表示されているDNSルックアップを含むアクティビティに分類します。

2
Nexus

単純なシェルスクリプト qtest.sh を使用できます。

%qtest -n3 "A a.gtld-servers.net" 172.19.1.1 62.4.16.70 62.4.17.69 208.67.222.222 208.67.220.220 156.154.70.1 156.154.71.1 
 3 172.19.1.1/ 172.19.1.1 
 49 62.4.17.69/62.4.17.69
61 208.67.222.222/208.67.222.222

ここに、 172.19.1.1(ローカルリゾルバー)の方が高速で、ISPリゾルバー、OpenDNSの順です。

2
bortzmeyer

Pingを使用して、サーバーとDNSサーバーの間でパケットが行き来するのにかかる時間を把握できます。原則として、機能するものを変更しないでください。

OpenDNSの欠点は、存在しないドメインがOpenDNSの検索ページを指すAレコードで応答する可能性があることです。グーグルは現在それをしていませんが、彼らが単にDNSリゾルバーにそれから得るものを何も提供していないと仮定するのは愚かでしょう。

1
gekkz

dnseval from dnsdiag Windows LinuxおよびMacのチャームのように機能します。 (古いネームベンチよりもはるかに優れています) githubにダウンロード

これを使用するには、まず、テストする各DNSにIPアドレスの行が含まれるテキストファイルを記述します。mylist.txt

8.8.8.8
192.168.178.1

そして実行する

./dnseval -f mylist.txt yahoo.com     # latency for cached sites
./dnseval -m -f mylist.txt yahoo.com  # latency for sites not in cache

これはサーバーのキャッシュサイズを検査しませんが、はるかに簡単で高速なアプローチであり、実際のパフォーマンスとよく相関することを期待しています。

0
jan-glx