DNS BIND 压力测试 - queryperf

当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试。在bind中,有一款自带的压力测试软件,queryperf。使用这款软件可以对DNS服务器作请求测试,并且使用方法简单,我们可以使用queryperf测试多次,取一个平均值,这样就算结果不准确,也不会和实际情况相差太大。
1.安装

queryperf是bind自带的测试软件,所以我们直接上官网下载bind,解压后就能找到queryperf的安装包。解压后,找到目录 contrib ,bind自带的第三方软件全在这个目录里面,我们要用到的queryperf也在里面。

ll contrib/
-rw-r--r-- 1 slim slim 4181 Feb 18 09:56 check5011.pl
-rw-rw-r-- 1 slim slim 3919 Apr 17 15:58 check-secure-delegation.pl
-rw-r--r-- 1 slim slim 3900 Feb 18 09:56 check-secure-delegation.pl.in
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 dane
drwxr-xr-x 6 slim slim 4096 Apr 17 15:58 dlz
drwxr-xr-x 3 slim slim 4096 Apr 17 15:58 idn
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 linux
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 named-bootconf
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 nanny
drwxr-xr-x 3 slim slim 4096 Apr 17 15:58 nslint-2.1a3
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 perftcpdns
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 pkcs11-keygen
drwxr-xr-x 2 slim slim 4096 Apr 17 15:58 query-loc-0.4.0
drwxr-xr-x 5 slim slim 4096 Apr 17 15:58 queryperf
-rw-r--r-- 1 slim slim 1462 Feb 18 09:56 README
drwxr-xr-x 9 slim slim 4096 Apr 17 15:58 sdb
drwxr-xr-x 5 slim slim 4096 Apr 17 15:58 zkt
-rw-rw-r-- 1 slim slim 3414 Apr 17 15:58 zone-edit.sh
-rw-r--r-- 1 slim slim 3386 Feb 18 09:56 zone-edit.sh.in
进入queryperf目录,开始编译安装。可以使用 ./configure -h 查看安装帮助,可以指定安装目录,以及bind相关目录,
不过我们默认安装就行了。
./configure 
make
通过上面的编译后,展开queryperf目录,在该目录下已经生成了一个queryperf的可执行文件。这个文件就是我们要用到的程序,我们把该程序移动到/usr/bin/目录下就可以使用了。
cp queryperf /usr/bin/
2.测试DNS服务器
queryperf使用格式:
queryperf [-d datafile] [-s server_addr] [-p port] [-q num_queries]
-d: 后面接上一个文件,文件的内容是用户对DNS的请求,一行为一条请求,所以为了测试,我们可以在里面写上几千几万条。
-s: DNS服务器地址
-p: DNS服务器端口
-q: 指定查询的输出的最大数量
使用vim命令先创建一个请求文件:vim querytest.txt

www.baidu.com	A
www.baidu.cn	cname
www.zhutianwei.cn	A
zhutianwei.cn	NS
3evip.cn	MX
pop3.3evip.cn	cname
www.slimsmart.cn	A
slimsmart.cn	NS
www.7k9.cn	A
test.7k9.cn	A
这几条记录还远远不够,我们可以多添加写记录,上万条。
执行测试命令:

$ queryperf -d querytest.txt -s 192.168.110.71

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 192.168.110.71)
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         1756920 queries
  Queries completed:    1756920 queries
  Queries lost:         0 queries
  Queries delayed(?):   0 queries

  RTT max:              0.272069 sec
  RTT min:              0.000071 sec
  RTT average:          0.001332 sec
  RTT std deviation:    0.001199 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Thu Apr 23 13:05:46 2015
  Finished at:          Thu Apr 23 13:07:44 2015
  Ran for:              117.916566 seconds

  Queries per second:   14899.687632 qps
QPS:14899.687632,可以多测试几次取平均值。
3.性能测试总结
1、在作服务器的性能测试时,最好不要在服务器平台自身使用测试软件测试,最好换另外一台机器,这样CPU处理的结果会更准确。
2、测试时先预估平台会遇到的最大请求数,用这个请求数作测试,量力而为,因为如果服务器遇到大流量的DDOS,单一机器性能再好,也扛不住。
3、使用queryperf作性能测试时,最好测试多次,取平均值。
4、可以修改配置文件的部分参数测试,如,开启递归,开启查询日志等功能作测试。
5、其它开源测试工具, tcpcopy

参考文章:

http://wubinary.blog.51cto.com/8570032/1379595

你可能感兴趣的:(dns)