티스토리 뷰

DNS query performance test

Jacob_baek 2012. 8. 1. 14:40

queryperf란?


DNS 성능테스트툴로 다량의 도메인 쿼리를 지속적으로 발생시킬수 있는 도구이다.


동작방식은 -d 옵션을 통해 입력받은 domain (record 포함)에 대해 -q 옵션에 맞는 쿼리 갯수만큼 쿼리를 발생시키며 -t 옵션에 맞는 timeout 만큼 대기하고 대기시간동안 응답이 발생하지 않는 경우 "[Timeout] msgid"을 출력한다.


설치 및 수행방법


bind 소스를 다운로드 받아서 컴파일 수행시 툴이 만들어진다.

web browser 혹은 ftp command를 통해 다운로드를 받는다. 

[root@localhost /]# ftp ftp.isc.org

ftp> cd isc/bind/9.9.1

ftp> ha

ftp> bi

ftp> mget *.gz


다운로드 받은 소스파일을 압축해제후 /contrib/queryperf 폴더로 이동하면 관련 소스를 확인할 수 있다.

해당 소스를 configure, make 수행하여 실행파일을 컴파일 한다.


컴파일된 파일을 통해 bind performance test를 수행할 수 있다.


<bind_folder>/util 폴더내를 확인해 보면 performance test에 사용될 domain을 만드는 스크립트가 존재하며 해당 스크립트를 통해 다량의 domain을 생성한다. (스크립트가 python으로 작성되어 있기 때문에 python이 설치되어 있어야 한다.)

[root@localhost queryperf]# chmod 755 util/gen-data-queryperf.py

[root@localhost queryperf]# python util/gen-data-queryperf -n 10 -p 100 -t com > test


이후 ./queryperf 수행시 옵션을 다음과 같이 수행하여 performance test를 수행한다.

[root@localhost queryperf]# ./queryperf -s 127.0.0.1 -d util/test -q 5000 -l 60 -t 5

[root@localhost /]# 

- (-s) 옵션은 네임서버(performance를 측정할)를 지정한다. 

- (-d) 옵션은 테스트에 사용될 domain 정보가 존재하는 파일을 지정한다.

- (-q) queries per second 로 초당 발생 쿼리를 나타낸다.

- (-l) 지정된 시간(second)만큼 반복수행한다.

- (-t) timeout을 지정(기본은 5초 이다.)


위 옵션을 사용하여 스크립트를 만들면 다량의 도메인쿼리를 지속적으로 발생시킬수 있다. (do while 문과 같은)


결과는 다음과 같은 형식으로 출력된다.

[Status] Processing input data

[Status] Sending queries (beginning with 127.0.0.1)

[Status] Testing complete


Statistics:


  Parse input file:     once

  Ended due to:         reaching end of file


  Queries sent:         100000 queries

  Queries completed:    96099 queries

  Queries lost:         3901 queries

  Queries delayed(?):   0 queries


  RTT max:         0.090539 sec

  RTT min:              0.000346 sec

  RTT average:          0.013343 sec

  RTT std deviation:    0.007328 sec

  RTT out of range:     0 queries


  Percentage completed:  96.10%

  Percentage lost:        3.90%


  Started at:           Tue Aug 20 17:55:52 2013

  Finished at:          Tue Aug 20 17:56:17 2013

  Ran for:              24.417848 seconds


  Queries per second:   3935.604808 qps


참고로 수행시 다음과 같은 메세지가 출력될수 있는데 해당 메세지는 응답을 못받았거나 timeout 시간을 초과한 경우라고 볼수 있다. (실제 동작방식은 -q옵션에 맞는 쿼리를 발생시키고 -t옵션에 맞게 대기하고 다시 -q에 맞게 쿼리를 발생)

[Timeout] Query timed out: msg id 476

- msg id (domain 정보가 담긴 파일의 line number)에 대한 응답이 timeout 되었음을 뜻한다.


참고사이트

http://www.serverchk.com/dnspro/dns290.htm


'' 카테고리의 다른 글

robotframework  (0) 2015.10.23
DNS query performance test  (0) 2012.08.01
댓글
댓글쓰기 폼