DNS压力测试工具--DNSperf
1、dnsperf简介
DNSPerf(DNS Performance)来自Prospect One公司,刚好最近研究 DNS 又想起这项服务。DNSPerf 从全世界超过两百个城市节点来检测各个 DNS 速度、反应时间及上线率(Uptime),除此之外,DNSPerf 还有针对一般使用者会用到的开放式 DNS 解析服务(Public DNS)进行监测记录,比较令我感到意外的是解析速度方面OpenDNS居然还比Google DNS来得更快!有兴趣的朋友可以到 DNSPerf 看看测试结果,对于读者来说还是蛮有参考价值的。dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件。
2、安装程序
<code> [root@docker-03
~]/<code>
3、参数详解
<code> ##Dnsperf
支持下面的这些命令行参数:-s
用来指定DNS
服务器的IP
地址,默认值是127.0
.0
.1
-p
用来指定DNS
服务器的端口,默认值是53-d
用来指定DNS
消息的内容文件,该文件中包含要探测的域名和资源记录类型,见下文-t
用来指定每个请求的超时时间,默认值是3000ms
-Q
用来指定本次压测的最大请求数,默认值是1000-c
用来指定并发探测数,默认值是100.dnsperf
会从-d
指定的文件中随机选取100个座位探测域名来发送DNS
请求-l
用来指定本次压测的时间,默认值是无穷大-e
本选项通过EDNS0
,在OPT
资源记录中运用edns-client-subnet
来指定真实的client
ip
-i
用来指定前后探测的时间间隔,因为dnsperf
是一个压测工具,所以本选项目前还不支持-P
指定用哪个传输层协议发送DNS
请求,udp
或者tcp
。默认值是udp
-f
指定用什么地址类型发送DNS
请求,inet
或者inet6
。默认值是inet
-v
除了标准的输出外,还输出每个相应码的个数-h
打印帮助/<code>
4、数据文件示例
-d选项指定数据文件名,数据文件示例如下,测试的次数和域名拷贝次数要一样:
<code>www
.app1.com A/<code>
数据文件中以“#”开头的行被认为是注释行,会被dnsperf忽略。
其中有效数据由两列组成,第一列是查询域名,第二列是查询的资源类型,dnsperf支持的资源类型如下:
A,NS,MD,MF,CNAME,SOA,MB,MG,MR,NULL,WKS,PTR,HINFO,MINFO,MX,TXT,AAAA,SRV,NAPTR,A6,ASFR,MAILB,MAILA,ANY
5、性能评测指标
<code>[root@RedHat_test
opt]#
dnsperf
-c
1000
-d
testfile
-s
172.17
.0
.98
DNS
Performance
Testing
Tool
Version
2.3
.2
[Status]
Command line:
dnsperf
-c1000-dtestfile
-s172.17.0.98
[Status]
Sending
queries
(to
172.17
.0
.98
)
[Status]
Started at:
Wed
Jan
1515
:34:50
2020
[Status]
Stopping
after
1run
through
file
[Status]
Testing
complete
(end
of
file)
Statistics:
Queries sent:
325336
Queries completed:
325336
(100.00%)
Queries lost:
0
(0.00%)
Response codes:
NOERROR
325336
(100.00%)
Average packet size:
request
29
,
response
75
Run
time
(s):
3.624032
Queries per second:
89771.834244
Average
Latency
(s):
0.000990
(min
0.000335
,
max
0.016325
)
Latency
StdDev
(s):
0.000441
/<code>