开发者社区> 墨华> 正文

三步搞定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

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

相关文章
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14225 0
Jmeter 压测 http(s)
  上一篇文章关于Jmeter介绍了Jmeter入门相关的知识。本文是实战篇,讲讲如何使用Jmeter对Http(s)进行压力测试。 Http测试 测试一   首先,添加 “线程组”,选择 “添加” -> "Sampler" -> "HTTP请求"。
1080 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28209 0
搭建全链路jmeter压测服务
无论是信息流产品中的热点事件还是电商领域的双十一促销活动,最为直接的现象就是高流量来袭。 那么针对该问题我们如何提前准备预案来应对呢? 全链路压测便是破解以上难题必不可少的一个环节,它也被工业界广泛定义为核武器。
927 0
通过压测工具Jmeter来评测函数计算的性能表现
借助压测工具jmeter来评测一下关于函数计算自动弹性扩容这个特性和请求响应时间的情况。
2015 0
使用jmeter进行网站的压力测试
开发工作中经常会遇到要测试自己做的网页的一个性能参数。今天就介绍一款apache公司出的 jmeter测试工具的使用.
866 0
+关注
墨华
专注于网络规划和设计、业务多活容灾建设
3
文章
12
问答
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载