开发者社区> 墨华> 正文

三步搞定Jmeter压测DNS

简介:
+关注继续查看

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,DNS通常使用UDP53端口(也支持TCP53)。除了在公网使用DNS做域名解析之外,在内网环境下,为了支持内部域名解析或者是一些高可用服务时,通常需要自建DNS服务。那么自建的DNS服务性能如何,则需要在部署生产环境之前进行性能测试。
本文就介绍一种使用Jmeter进行DNS压测的方法。很多场景下,Jmeter都是用作web服务的压测工具,得益于插件的支持,Jmeter还可以扩展出很多其他的功能,比如通过UDP Protocol Support插件,能够模拟发送UDP消息,而DNS服务通常使用的就是UDP协议,构造合适的UDP请求,就可可以用来压测DNS服务。
整个压测过程包含三个部分,1、软件和环境准备;2、压测脚本构造;3、压测和结果分析

软件环境准备

本次压测基于Jmeter 3.2 和 JDK 8 ,在windows x64环境下生成压测脚本

基本环境安装

Jmeter 3.2 下载JDK8 下载

安装过程不再赘述,安装完成后,在Jmeter安装路径下执行bin/jmeter.bat打开Jmeter,能够正常打开则表示安装无误

安装插件

插件下载 下载 plugins-manager.jar 然后复制到 lib/ext 目录下, 并重启Jmeter

重启完成后在 选项 下选择 “Plugins Manager”,进入到插件管理界面,输入UDP,勾选UDP Protocol Support,插件管理器会自动安装对应的插件,安装完成后重启Jmeter

压测脚本构建

首先,新建一个线程组,添加UDP request用于发送请求,Summary Report 用于收集测试信息

然后,选择UDP request,构建UDP请求信息,包含两个信息:
1、压测的DNS服务器和端口,例如本次压测以114DNS作为测试,则应该填写114.114.114.114 端口为53

2、UDP 请求的request data信息,此处根据不同的Encode/Decode Class,有不同的方法,这里介绍最常见的两种

第一种,通过Wireshark工具获取,此时Encode/Decode Class设置如下

kg.apc.jmeter.samplers.HexStringUDPDecoder

a、打开Wireshark开始抓包,然后在命令行执行nklookup www.baidu.com

b、停止Wireshark抓包,过滤条件设置为 dns,找到刚才DNS解析的请求报文

c、在报文详情中右击”Domain Name System(query)”,然后选择”Copy => Byptes(Hex Stream)”, 然后把复制到的数据粘贴到jmeter UDP Request的request data中

完成后如图所示

第二种,通过指定解析DNS的域名和记录类型,此时Encode/Decode Class设置如下

kg.apc.jmeter.samplers.DNSJavaDecoder

在jmeter UDP Request的request data中按照如下格式填写信息

www.baidu.com. A IN

完成后如图所示

压测和结果分析

DNS服务器有两个指标比较重要:响应时间和失败率。
UDP消息是无状态的,有可能会在网络传输中丢失。如果发生丢失,那么客户端就会一直等待,直到超时。因此在测试中,根据业务需求选择合适的超时时间。

设置合适的并发数和循环次数,然后开始压测,待测试完成后即可在Summary Report看到结果统计信息,如下图

小结

1、Jmeter是一款强大的工具,通过其插件功能,能够拓展其压测的范围,基于UDP request,不仅可以测试DNS,还可以测试NTP 等UDP协议的服务。
2、本文主要用于演示压测过程,实际压测时根据Jmeter官方建议使用命令行而非GUI

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jmeter分布式压测小技巧
无论是从成本角度还是维护的难易方面,压测机的数量,适量就好。举个例子,8C16G的一台服务器,部署jmeter后,根据我个人的测试比对数据,配置≤1500个线程数,最好。太多了性能损耗较大,延时高;太少了又浪费。
104 0
基于Jmeter的分布式压测实践
本文主要介绍:1.Jmeter集合点用法;2.Jmeter命令行参数详解;3.Jmeter分布式部署方案;4.Jmeter分布式调度原理;5.Jmeter分布式部署过程;Jmeter分布式压测业务系统登录接口实践;
293 0
利用 JMeter 压测上传和下载接口实战
突然来一个任务,让压测对象存储服务的上传和下载接口,之前也没有干过呀,也不属于自己的工作范畴。但是,事情着急,自己也就硬着头皮搞了。说到压测接口,自己首先想到了 Postman 和 Apipost,但是简单看过之后,发现对于自己的压测需求满足起来可能有些费劲。于是,自己又找到了 JMeter,嗯,果然,实现并发测试 so easy!
269 0
电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
98 0
JMeter - 压测模拟并发
JMeter - 压测模拟并发
66 0
记一次 JMeter 压测 HTTPS 性能问题
在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。
560 0
【JMeter】压测工具的使用(2)
【JMeter】压测工具的使用
79 0
【JMeter】压测工具的使用(1)
【JMeter】压测工具的使用
64 0
Jmeter-阶梯式压测Concurrency Thread Group
Jmeter-阶梯式压测Concurrency Thread Group
578 0
阿里云PTS-原生JMeter压测实战-云测试
阿里云PTS-原生JMeter压测实战-云测试
1852 0
+关注
墨华
专注于网络规划和设计、业务多活容灾建设
文章
问答
视频
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
相关文档: 迁云实施服务
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载