三步搞定Jmeter压测DNS

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

域名系统(英文: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环境下生成压测脚本

基本环境安装

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

目录
相关文章
|
4月前
|
测试技术 API
使用wrk对api接口进行性能测试
使用wrk对api接口进行性能测试
|
7月前
|
网络协议 JavaScript 前端开发
性能工具之Jmeter压测Hprose RPC服务
【5月更文挑战第19天】性能工具之Jmeter压测Hprose RPC服务
84 5
|
测试技术 调度
Jmeter压测工具使用手册(二)
Jmeter压测工具使用手册
264 0
|
JSON Java 测试技术
Jmeter压测工具使用手册(三)
Jmeter压测工具使用手册
215 0
|
Java 测试技术 Linux
Jmeter压测工具使用手册(一)
Jmeter压测工具使用手册
333 0
|
JSON Java 测试技术
Jmeter压测工具使用手册(四)
Jmeter压测工具使用手册
260 0
|
NoSQL 关系型数据库 MySQL
Web服务压测神器wrk
wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo.me,发现mysql性能不行后加了wp-cache,通过cache把我网站的承载能力提升了10多倍。但当时之前简单使用它的初级功能,最近工作中恰好有个http服务需要压测,然后就拿wrk做了。这次使用了wrk lua高级功能实现了压测,我们找到了我们服务的瓶颈,同时也被wrk的超高性能所震惊。
174 0
|
网络协议 前端开发 JavaScript
如何使用jmeter进行压测
1.概述 一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是一些核心功能,根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲解如何快速上手使用jmeter来进行压测。 JMeter,一款接口测试工具,是Java程序,需要JDK环境,建议使用JDK8或者JDK11。
298 0
|
测试技术 C++
5分钟内快速搞定Jmeter集群压测环境~
5分钟内快速搞定Jmeter集群压测环境~
|
Web App开发 负载均衡 测试技术
利用 JMeter 压测上传和下载接口实战
突然来一个任务,让压测对象存储服务的上传和下载接口,之前也没有干过呀,也不属于自己的工作范畴。但是,事情着急,自己也就硬着头皮搞了。说到压测接口,自己首先想到了 Postman 和 Apipost,但是简单看过之后,发现对于自己的压测需求满足起来可能有些费劲。于是,自己又找到了 JMeter,嗯,果然,实现并发测试 so easy!
629 1
利用 JMeter 压测上传和下载接口实战