Mik*_*e L 16 domain-name-system performance testing
我正在考虑将 Google 的公共 DNS 服务器作为我网络的外部 DNS。目前我正在使用来自我的 ISP 的 DNS 服务器。我过去也考虑过 OpenDNS,但最终决定不跳。
我希望能够对各个服务器能够为我们的 DNS 请求提供服务的速度进行基准测试。我在 nslookup 中看不到任何有用的东西。
如何测试外部提供的 DNS 的往返时间?
小智 42
你可以简单地dig和grep
$ 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
Run Code Online (Sandbox Code Playgroud)
您可以使用数据包捕获程序(DNS 过滤)来跟踪 DNS 查询\响应时间。您可以在您的机器或您的内部 DNS 服务器(如果您有的话)上运行它。所有事情或多或少都相同,这应该让您大致了解 Google DNS 与您的 ISP 相比的速度。
小智 5
我写了一些不错的脚本来评估与 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 -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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34837 次 |
| 最近记录: |