외부 DNS 조회 성능을 어떻게 벤치마킹합니까?


14

Google의 퍼블릭 DNS 서버를 네트워크의 외부 DNS로 고려하고 있습니다. 현재 ISP의 DNS 서버를 사용하고 있습니다. 나는 과거에도 OpenDNS를 고려했지만 궁극적으로 점프하지 않기로 결정했습니다.

각 서버가 얼마나 빨리 DNS 요청을 처리 할 수 ​​있는지 벤치마킹하고 싶습니다. nslookup에서 도움이되는 것은 없습니다.

외부에서 제공 한 DNS의 왕복 시간을 어떻게 테스트 할 수 있습니까?

답변:


5

패킷 캡처 프로그램 (DNS 필터링)을 사용하여 DNS 쿼리 / 응답 시간을 추적 할 수 있습니다. 컴퓨터 나 내부 DNS 서버 (있는 경우)에서이를 실행할 수 있습니다. 모든 것이 다소 평등하기 때문에 Google DNS가 ISP와 얼마나 빨리 비교되는지에 대한 일반적인 아이디어를 얻을 수 있습니다.


5
Wireshark의 DNS dissector는 요청 / 응답 추적을 수행합니다. "dns.time"디스플레이 필터를 사용하여 응답 시간을 찾을 수 있습니다.
Gerald Combs

40

당신은 간단 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

13

GRC의 도메인 이름 속도 벤치 마크를 사용하십시오 .


나는이 도구를 확인했다 ... 그것은 바위!
Mike L

2
Google의 이름 벤치를 실행 한 후 GRC의 벤치 마크를 시도했습니다. 구글은 자신의 8.8.4.4가 다른 것보다 21.1 % 빠르다고 말했다. 그러나 8.8.4.4가 추가 된 GRC의 맞춤 목록은 Google이 Comcast에서 제공 한 현재 DNS보다 느리고 약간 빠릅니다. 가장 빠른 것은 Level 3 Communications의 모든 것입니다. 현재 Google에 대한 GRC의 DNS 벤치 마크를 신뢰합니다. 그리고 GRC는 어셈블리로 작성되었으며 단일 184k 파일에서 실행됩니다. 감동적인!
Brian Boatright

미국이 아닌 경우 GRC에주의하십시오. 미국 이외의 많은 호스팅 서버를 테스트하지 않는 것 같습니다.
NickG



2

Firefox 및 IE 용 Firebug 플러그인 에는 모든 파일 요청에 대한로드 시간을 그래픽으로 표시하는 "net"탭이 있습니다.

녹색으로 표시되는 DNS 조회를 포함하여 활동으로 분류합니다.


2

간단한 쉘 스크립트 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
61208.67.222.222 / 208.67.222.222

여기서, 172.19.1.1로컬 리졸버, 오픈 DNS이어서, ISP 리졸버이어서 빠르다.


2

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

1

ping을 사용하여 서버와 DNS 서버간에 패킷이 앞뒤로 이동하는 데 걸리는 시간을 알아낼 수 있습니다. 일반적으로 작동하는 것을 변경하지 마십시오.

OpenDNS의 단점은 존재하지 않는 도메인은 OpenDNS의 검색 페이지를 가리키는 A 레코드로 응답 할 수 있다는 것입니다. 구글은 현재 그렇게하지는 않지만, 단순히 DNS 리졸버에게 아무것도 얻을 수없는 것을 제공한다고 가정하는 것은 어리석은 일이다.


대답을 나눌 수 있다면 그럴 것입니다. 나는 그것이 단순하다는 핑 테스트를 좋아했다. 나는 그들 모두에 대해 실행되도록 한 다음 평균을 볼 수 있습니다. 여기에서는 패킷 왕복과 함께 쿼리 자체의 응답 시간을보고 싶었으므로 패킷 캡처를 선택했습니다. 설정하고 테스트하는 데 더 많은 작업이 필요하지만 외부 서버의 실제 성능에 대해 더 정확합니다. 감사!
Mike L

1
핑을 사용하는 것은 좋지 않습니다. 모든 서버가 핑에 응답하는 것은 아니며 응답 시간이 DNS 및 ICMP와 동일하다는 보장은 없습니다.
bortzmeyer 2009

0

dnseval에서 dnsdiag 윈도우가 리눅스와 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

이것은 서버의 캐시 크기를 검사하지는 않지만 훨씬 쉽고 빠른 접근 방식이며 실제 성능과 관련이있을 것으로 기대합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.