当前位置: 首页 > article >正文

dnsperf测试dns性能

dnsperf测试dns性能

dnsperf和resperf是由Nominum/Akamai(2006-2018年)和DNS-OARC(自2019年起)开发的免费工具,这些工具可以简化获取域名服务(DNS)精确延迟和吞吐量指标的过程。这些工具易于使用,能够模拟典型的互联网场景,因此网络运营商可以基准测试他们的命名和寻址基础设施,并为升级做好规划。最新版本的dnsperf和resperf支持包含IPv6查询的测试文件。

dnsperf会自行调整DNS查询负载以模拟网络条件。dnsperf中的新功能提高了延迟测量的精度,并允许每个数据包进行单独的查询延迟报告。dnsperf现在支持多线程,可以在多核系统中支持多个dnsperf客户端(每个客户端需要两个核心)。dnsperf的输出也进行了改进,使其更加简洁和实用。延迟数据可以用于生成详细的图表,使网络运营商更容易利用这些数据。

resperf会系统地增加查询速率,并监控响应速率,以模拟缓存的DNS服务。

命令手册页面:参见dnsperf(1)和resperf(1)。

更多信息见下面网页:https://www.dns-oarc.net/tools/dnsperf

仓库地址:https://github.com/DNS-OARC/dnsperf

dnsperfresperf读取描述DNS查询的输入文件,并将这些查询发送到DNS服务器以测量性能。

1. 依赖

dnsperf 除了需要一个正常的C编译环境(包括autoconf、automake、libtool和pkgconfig)外,还需要以下几个库:

  • OpenSSL - 用于支持TSIG
  • Concurrency Kit - 用于原子操作
  • LDNS - 可选,用于支持动态更新
  • nghttp2 - 用于通过HTTP/2支持DNS-over-HTTPS

Debian/Ubuntu下安装依赖:

sudo apt-get install build-essential
sudo apt-get install -y autoconf automake libtool
sudo apt-get install -y libssl-dev libldns-dev libck-dev libnghttp2-dev

CentOS7下安装依赖(确保启用了EPEL仓库):

sudo yum install epel-release -y
sudo yum groupinstall 'Development Tools'
sudo yum install -y autoconf automake libtool pkgconfig 
sudo yum install -y openssl-devel ldns-devel ck-devel libnghttp2-devel

2. 安装dnsperf

支持包管理器、源码安装等方式。

2.1 包管理器安装

CentOS7下安装:

sudo yum install epel-release -y
sudo yum install dnsperf -y

2.2 从源码编译安装

源码下载地址:https://www.dns-oarc.net/tools/dnsperf

tar zxvf dnsperf-version.tar.gz
cd dnsperf-version
./configure [options]
make
make install

2.3 从git仓库编译构建

git clone https://github.com/DNS-OARC/dnsperf.git
cd dnsperf
./autogen.sh
./configure [options]
make
make install

3. 使用dnsperf进行测试

dnsperf的基本命令格式如下:

dnsperf -s <server_ip> -d <query_file> -Q <max_qps>
  • -s <server_ip>: 指定要测试的DNS服务器的IP地址。
  • -d <query_file>: 指定包含DNS查询列表的文件。
  • -Q <max_qps>: 限制每秒查询数(QPS),可以不指定,表示不限制。

准备一个查询文件:

cat <<EOF >queries.txt
baidu.com A
www.baidu.com A
mail.baidu.com A
github.com A
www.yahoo.com A
www.microsoft.com A
www.aliyun.com A
developer.aliyun.com A
kubernetes.io A
kubernetes A
kubernetes.default.svc.cluster.local A
coredns.kube-system.svc.cluster.local A
EOF
示例1:基本测试

假设你有一个DNS服务器的IP地址为192.168.1.100,查询文件为queries.txt,可以通过以下命令进行测试:

dnsperf -s 192.168.1.100 -d queries.txt

该命令将对192.168.1.100进行查询压力测试,使用queries.txt中的查询列表,并且不限制QPS。

示例2:限制QPS的测试

如果你希望限制每秒查询数为1000 QPS,可以使用以下命令:

dnsperf -s 192.168.1.100 -d queries.txt -Q 1000

这会将测试的负载限制在1000 QPS。

示例3:运行特定时间的测试

dnsperf默认会持续运行测试直到所有查询完成。你可以使用-l参数指定测试持续的时间(以秒为单位),例如运行60秒:

dnsperf -s 192.168.1.100 -d queries.txt -l 60

4. 测试结果分析

运行dnsperf后,你会得到如下的输出:

Statistics:

  Queries sent:         100000
  Queries completed:    100000
  Queries lost:         0

  Response codes:       NOERROR 100000
  Average Latency:      20.2 ms
  Peak QPS:             4000
  Average QPS:          3333.33
  • Queries sent: 发送的查询数。
  • Queries completed: 成功完成的查询数。
  • Queries lost: 丢失的查询数。
  • Response codes: 返回的响应码统计(例如NOERROR)。
  • Average Latency: 平均延迟(毫秒)。
  • Peak QPS: 峰值QPS。
  • Average QPS: 平均QPS。

通过这些数据,可以分析DNS服务器的性能,包括在高负载下的响应能力和查询成功率。


http://www.kler.cn/news/289022.html

相关文章:

  • 春秋云镜initial
  • c++----杨辉三角(补充)
  • 学懂C++(五十一): C++ 陷阱:详解多重继承与钻石继承引发的二义性问题
  • 上门家政系统源码开发详解
  • 界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合
  • Unified-IoU:用于高质量对象检测
  • 教你手机投屏到电视方法,用电视屏幕让家庭蛋糕制作更有趣
  • 数据结构-了解树和二叉树
  • 科研绘图系列:python语言聚类图(hclust plot)
  • mysql高级知识之集群
  • Ascend C算子开发(入门)—— 算子开发初体验
  • C++笔记---模板初阶
  • 论文速览【LLM】 —— 【ORLM】Training Large Language Models for Optimization Modeling
  • 多线程——创建
  • UDP广播、 组播通信
  • macos 使用port查询并安装python2, python3多版本, 设置默认python版本方法
  • 算法训练营|图论第8天 拓扑排序 dijkstra
  • 【笔试练习】深信服校园招聘c/c 软件开发H卷
  • 使用python导出Excel表格中的lua配置
  • 初识Linux · 有关makefile
  • 【Rust光年纪】化学计算不完全指南:Rust语言库全面解析
  • jenv 一款macos下的开源JAVA多版本环境安装管理切换工具
  • Swift concurrency 5 — async let的理解与使用
  • 聊聊随机测试和猴子测试
  • Python参数传递的艺术:解锁编程灵活性的秘密武器
  • uniapp写的一个年月日时分秒时间选择功能
  • 【数据结构初阶】——栈和队列
  • 求三元组中可能出现的最小距离
  • RabbitMQ练习(Routing)
  • 使用COAP和MQTT协议的多协议方法开发的用于机器人手术的自动医疗物联网系统