如何对外部DNS查找的性能进行基准testing?

我正在考虑Google的公共DNS服务器作为我的networking的外部DNS。 目前我正在使用我的ISP的DNS服务器。 我以前也考虑过OpenDNS,但最终决定不跳。

我希望能够以各自的服务器能够服务于我们的DNS请求的速度进行基准testing。 我在nslookup中看不到任何有用的信息。

如何testing外部提供的DNS的往返时间?

您可以使用数据包捕获程序(针对DNS进行过滤)来跟踪DNS查询\响应时间。 您可以在您的机器上或在您的内部DNS服务器上运行(如果有的话)。 所有的事情大致相同,这应该给你一个大概的想法,即Google DNS与你的ISP相比有多快。

你可以简单地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 

使用GRC的域名速度基准 。

我还看了一下namebench– Google的开源DNS基准实用程序。 这是非常全面的。

我已经在OpenDNS和GoogleDNS之间做了一些基本的基准testing。 结果表明,OpenDNS产品一直比Google的DNS服务更快:

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

Firefox和IE的Firebug插件有一个“networking”选项卡,为您提供每个文件请求的加载时间的graphics表示。

它将其分解成包括DNS查询在内的活动,以绿色显示。

简单的shell脚本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是一个本地parsing器,速度更快,其次是ISPparsing器,然后是OpenDNS。

您可以使用ping来确定数据包在您的服务器和DNS服务器之间来回移动需要多长时间。 一般来说:永远不要改变什么工作。

OpenDNS的一个缺点是,不存在的域可能会响应一个指向OpenDNSsearch页面的Alogging,因为他们倾向于这样做。 谷歌目前没有这样做,但假设他们只是提供DNSparsing器而没有任何东西可以从中获益,那将是愚蠢的。

我写了一个很好的脚本来评估连接到DNS服务器:

 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 -ii 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