原文地址:http://bbs.chinaunix.net/thread-216556-1-1.html
今天上新闻组,听别人说BIND自带了一个测试DNS服务器的工具。刚才大概看了一下该工具的说明文档,呵呵,向大家做个报告先
1.该工具所在目录
bind-9.2.2/contrib/queryperf(不知道BIND 8或BIND4是否带有该工具)
2.简介
该工具原本设计是用来测试权威DNS服务器的,但是也可以使用该工具来测试只缓存DNS服务器。我大概看了一下说明文档,简要介绍一下(建议阅读原文)。
1)测试环境:
建议在不同的机器上运行queryperf和DNS服务器,这样queryperf的执行就不会影响到DNS服务器的运行。建议把这两台机器放置在100M以上速度的环境中,并且在这两台机器之间最好不要有防火墙或者路由器等设备。这样测试的结果才能够更好地反映DNS服务器的执行速度。
2)配置服务器
关闭递归查询(这是用来测试权威服务器时需要的,如果你测试的是只缓存服务器,那当然不能关闭了)。在named.conf中的options语句中添加:
recursion no;
3)建立测试文件
说明文档中说最好建立一个有1w到100w条数据的测试文件,该文件的每一行其实就是一个查询,格式如下:
foo.com A
第一个字段是域名(这些域名最好是权威服务器所管理的区中的真实域名),第二个字段是查找类型。
其实queryperf的执行就是打开测试文件,一行一行的读取文件中的记录,然后再查找服务器,最后统计相关信息进行报告。
3.安装
该工具的安装非常的简单,进入bind-9.2.2/contrib/queryperf目录执行如下命令就可以了:
[root@andy queryperf]# ./configure
[root@andy queryperf]# make
执行完如上命令后就可以看到目录中多了一个可执行文件――queryperf,这正是我们所需要的,继续
4.使用
1)建立测试文件
这是我建立的测试文档(文件名为:test),
[root@andy queryperf]# cat test
www.andy.com A
andy.com A
andy.com NS
andy.com MX
fdsaf.andy.com A
www.sohu.com NS
jay.andy.com A
dns.andy.com A
说明:这是我用来测试的,所以就只写了8条记录。“andy.com”是被测试的DNS服务器上的一个区,测试用的。各位在实际应用时,请做相应修改!
备注:
通过 #cat test1 >> test
#cat test >> test1
反复执行上述命令,test可迅速增加到100万行
2)测试
执行如下命令:
[root@andy queryperf]# ./queryperf –d test –s 192.168.0.113
说明:“-d”后面跟的是前面建立的测试文件的文件名:test
“-s”后面跟的是需要进行测试的服务器
结果如下:
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.1.1.2.2.2 2002/07/02 04:17:18 marka Exp $
[Status] Processing input data
[Status] Sending queries
[Status] Testing complete
Statistics:
Parse input file: once
Ended due to: reaching end of file
Queries sent: 8 queries
Queries completed: 8 queries
Queries lost: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Tue Dec 4 21:36:59 2003
Finished at: Tue Dec 4 21:36:59 2003
Ran for: 0.195633 seconds
Queries per second: 40.892896 qps
本机实测结果
[root@yqsj-db queryperf]# ./queryperf -d test -s 10.82.38.15
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
[Status] Processing input data
[Status] Sending queries (beginning with 10.82.38.15)
[Timeout] Query timed out: msg id 88
[Timeout] Query timed out: msg id 94
[Timeout] Query timed out: msg id 100
[Timeout] Query timed out: msg id 103
[Timeout] Query timed out: msg id 109
[Status] Testing complete
Statistics:
Parse input file: once
Ended due to: reaching end of file
Queries sent: 807891 queries
Queries completed: 807886 queries
Queries lost: 5 queries
Queries delayed(?): 0 queries
RTT max: 0.105361 sec
RTT min: 0.000251 sec
RTT average: 0.004781 sec
RTT std deviation: 0.002315 sec
RTT out of range: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Wed Dec 5 15:45:59 2012
Finished at: Wed Dec 5 15:49:14 2012
Ran for: 195.045811 seconds
Queries per second: 4142.032048 qps
[root@yqsj-db queryperf]# ./queryperf -d test -s 10.82.38.15
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
[Status] Processing input data
[Status] Sending queries (beginning with 10.82.38.15)
[Status] Testing complete
Statistics:
Parse input file: once
Ended due to: reaching end of file
Queries sent: 807891 queries
Queries completed: 807891 queries
Queries lost: 0 queries
Queries delayed(?): 0 queries
RTT max: 0.169378 sec
RTT min: 0.000496 sec
RTT average: 0.005021 sec
RTT std deviation: 0.001086 sec
RTT out of range: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Wed Dec 5 15:59:59 2012
Finished at: Wed Dec 5 16:03:22 2012
Ran for: 203.490201 seconds
Queries per second: 3970.171517 qps