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

时间: 2024-08-17 13:05:23

三步搞定Jmeter压测DNS的相关文章

艺术设计理论:字体设计三步搞定

文章描述:艺术设计理论:字体设计三步搞定. 字体设计三步搞定: [1] [2]  下一页

photoshop简单三步搞定毛笔字形制作教程

给各位photoshop软件的使用者们来详细的解析分享一下简单三步搞定毛笔字形的制作教程. 教程分享:   毛笔字体恣意洒脱,有摧枯拉朽之势,无奈中文字库里面的字型只有其形,却无其势,让我们的作品呈现出的感觉大打折扣.问题所在就是缺少了书法应有的飞白,其实想要设计出一款非常好看的毛笔字形其实很简单,简单到只要三步就可以完成,一起来看吧. [第一步 确立字形](书法好的朋友可以写出来再按照我的方法生成,我就不献丑了) 很多网站都有毛笔字体在线生成的功能(百度毛笔字在线生成即可找到),我们需要选用一

【Linux】Linux下修改主机名-简单三步搞定

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 在阿里云买了一台Linux服务器,可是root用户名竟然是产品ID,用起来很不爽. 如何改用户名呢,下面简单的三步就可以搞定. 一. 以root用户登录,或者登录后切换到root用户. 在终端输入: hostname 会显示当前主机名. 输入vi /etc/sysconfig/network,然后将HOSTNAME=后面的值改为想要设置的主机名. 二. 更改/etc下的hosts文

三步搞定win7无线网络共享

还在为你的手机流量不够犯愁吗?还在为破解不了无线密码头疼吗?有了win7无线热点共享让你挣脱流量束缚,无视一切加密无线网,随时随地wifi! 连接必备条件: 1.带有无线网卡的笔记本或台式机 2.具备搜索wifi功能的手机 3.Win7系统(xp应该是不可以的,大家可自行尝试) 下面就开启设置之旅吧! 第一步:打开win7开始菜单→运行→输入CMD 如下图 第二步:输入指令 1.netsh wlan set hostednetwork mode=allow 承载网络模式设置为允许 2.netsh

三步搞定phpstudy虚拟域名配置,简单方便!

第一步:在 C:\Windows\System32\drivers\etc下的hosts文件中添加 第二步:找到Apache 下的httpd.conf  文件 打开,去掉前边的# 第三步: 在vhosts.conf 文件中,配置以下内容 这样就配置成功了 效果: 需要注意的: 散装软件中,是默认在httpd-vhosts.conf  这个文件中的,phpstudy 这个软件是在Apache中的vhosts.conf 中,不好搞错了!

三步搞定android应用底部导航栏

很多android应用底部都有一个底部导航栏,方便用户在使用过程中随意切换.目前常用的做法有三种:一种是使用自定义tabHost,一种是使用activityGroup,一种是结合FrameLayout实现.笔者再做了多款应用后,为了节约开发周期,封装了一个抽象类,只要三步便可完成底部栏的生成及不同页面的调用. public class ActivitycollectiondemoActivity extends ActivityCollection { /** Called when the a

选择原生 APP 还是自适应 web?三步搞定!

确定网站的移动策略并非什么高深的学问,但需要认真的研究和规划.设计公司Entropy近日将企业选择移动路线的决策简化为三步. 一年半以前,Facebook首席执行官马克扎克伯格一句"豪赌HTML5是Facebook犯下的最大错误"引发了业界关于原生APP和移动(自适应)web两条技术路线的大争论. 如今这个争论似乎已经有了结论,正如Entropy首席执行官指出的: 用户经常会问,应当开发面向移动设备的自适应移动web站点还是将所有预算投入原生APP?我们的答案很简单:两个都重要! 如今

三步搞定VPN服务器远程连接

Windows远程接入服务器允许VPN客户进行身份识别并且透明地连接到内部网络,就像直接连接到网络 一样.这能使用户以安全的方式进行远程工作.本文主要介绍在检查VPN连接故障时应该在服务器端解决 的一些常见问题. 当一个VPN用户进行远程连接时,远程接入服务器很容易产生一些设置方面的问题.VPN服务器必须进 行恰当的设置以便允许远程接入.如果遇到连接问题,你要验证这个客户机的设置是正确的,并且验证最 终用户是否具有连接到这台服务器的能力.你可以按照如下步骤操作: 1. 验证这台服务器是否已经启用

GridView的CheckBox列选择及多参数传递三步搞定_实用技巧

1.GridView的列设置 复制代码 代码如下: <asp:TemplateField HeaderStyle-CssClass="check" ItemStyle-CssClass="check"> <HeaderTemplate> <input type="checkbox" onclick="selectAll(this)" /> 全选 </HeaderTemplate>