三步搞定Jmeter压测DNS

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

域名系统(英文: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

目录
相关文章
|
19天前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
46 2
|
1月前
|
测试技术 持续交付 Apache
深度挖掘:Python性能测试中JMeter与Locust的隐藏技能🔍
【8月更文挑战第5天】随着软件规模扩大,性能测试对系统稳定性至关重要。Apache JMeter和Locust是两大主流工具,各有千秋。本文探索它们在Python环境下的进阶用法,挖掘更多性能测试潜力。JMeter功能强大,支持多种协议,可通过命令行模式执行复杂测试计划,并与Python集成实现动态测试数据生成。Locust基于Python,通过编写简洁脚本模拟HTTP请求,支持自定义请求及与Python库深度集成。掌握这些技巧可实现高度定制化测试场景,有效识别性能瓶颈,提升应用稳定性。
114 1
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【8月更文挑战第5天】性能测试确保应用高负载下稳定运行。Apache JMeter与Locust是两大利器,助力识别解决性能瓶颈。本文介绍这两款工具的应用与优化技巧,并通过实战示例展示性能测试流程。首先,通过JMeter测试静态与动态资源;接着,利用Locust的Python脚本模拟HTTP请求。文中提供安装指南、命令行运行示例与性能优化建议,帮助读者掌握性能测试核心技能。
82 0
|
1月前
|
消息中间件 Java 测试技术
Python性能测试全攻略:JMeter与Locust,双剑合璧斩断性能瓶颈🗡️
【8月更文挑战第4天】在软件开发中,性能至关重要。对Python开发者来说,掌握高效性能测试方法尤为关键。本文将带您探索性能测试工具JMeter与Locust的强大功能。JMeter作为Java世界的巨擘,以其强大功能和灵活性在性能测试领域占有一席之地,不仅适用于Java应用,也能测试Python Web服务。
84 0
|
14天前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
18天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【9月更文挑战第10天】随着软件应用的不断扩展,性能测试成为确保系统稳定运行的关键环节。本文通过对比Apache JMeter和Locust,探讨了如何在Python环境中利用这两款工具挖掘更多性能测试潜力。JMeter是一款成熟且功能强大的开源工具,支持多种协议,适用于各种应用的测试;而Locust则基于Python,通过简单脚本模拟HTTP请求,更适合Web应用测试。
49 2
|
23天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
44 5
|
20天前
|
消息中间件 监控 测试技术
惊呆了!Python性能测试高手都用这些神器:JMeter+Locust,效率翻倍📈
【9月更文挑战第8天】在软件开发中,性能测试对确保应用稳定性和高效运行至关重要。对于Python开发者而言,选择合适的性能测试工具能显著提升测试效率并精准定位性能瓶颈。本文深入探讨了JMeter和Locust这两款工具的独特优势。JMeter作为跨平台的性能测试工具,支持多种协议,具备高度可定制性和扩展性;而Locust则专为Python应用设计,利用协程实现高并发,提供实时监控和分布式测试功能。两者结合使用,可在实际项目中实现1+1>2的效果,帮助开发者构建全面高效的测试方案,保障应用稳定运行。
57 1
|
22天前
|
测试技术 Apache 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【9月更文挑战第6天】你的Python应用是否曾因响应缓慢而让用户望而却步?借助JMeter与Locust,这一切将迎刃而解。JMeter作为Apache基金会的明星项目,以其强大的跨平台和多协议支持能力,成为性能测试领域的魔法师;而Locust则以Python的简洁与高效,让性能测试更加灵活。通过实战演练,你可以利用这两款工具轻松识别并解决性能瓶颈,优化数据库查询、网络配置等,最终使应用变得敏捷高效,轻松应对高并发挑战。
13 1
|
24天前
|
测试技术 持续交付 Apache
性能测试不再愁!Python+JMeter+Locust,三步打造高性能应用
【9月更文挑战第4天】随着互联网的发展,软件性能成为衡量应用成功的关键。性能测试确保应用稳定高效运行,但复杂环境和多样需求带来了挑战。Python、JMeter和Locust三款工具可构建高效全面的性能测试方案。Python语法简洁,库丰富;JMeter提供图形界面,支持多种协议;Locust基于Python,简单易用且高度可扩展。结合三者,能满足复杂需求,保证灵活性与高效性。无论初学者还是资深工程师,都能确保应用高性能运行。
26 1