此处介绍另一款DNS压测小工具dnsperf。
源码编译安装
# 准备
apt-get update
apt-get install git autoconf automake libtool make pkg-config check g++ librsync-dev libz-dev libssl-dev uthash-dev libyajl-dev libck-dev libnghttp2-dev
# 拉取源码编译安装
git clone https://github.com/DNS-OARC/dnsperf.git
cd /dnsperf/
./autogen.sh
./configure
make
make install
参数说明
-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
打印帮助
如何使用
1. 编写要压测的dns配置文件
# 一行只能有两列,之后的列会被忽略
www.test1.com A
www.test2.com AAAA
2. 使用示例
dnsperf -d test.txt -s 8.8.8.8 -c100000 -Q100000 -l6000
重点关注输出里面的qps指标,该值越大说明性能越好。
若需要在k8s环境上使用可使用docker hub上的镜像 guessi/dnsperf。