背景
很多场景下,Jmeter都是用作HTTP服务的压测工具。其实,得益于插件,jmeter还有很多其他的功能。其中一条就是用来发送UDP消息,UDP是一种轻量级的网络协议,它的性能一般会很高。
最常用的UDP消息,估计就是dns请求了。DNS服务器的作用是将域名解析成ip地址。
DNS性能指标
插件的作者认为,dns服务器有两个指标比较重要:响应时间和失败率。UDP消息是无状态的,有可能会在网络传输中丢失。如果发生丢失,那么客户端就会一直等待,直到超时;然后还可能会重试。
Jmeter创建dns请求
- 打开jmeter这款软件,添加线程组,添加“查看结果数”方便查看结果。
- 在线程组中添加一个UDP Request
- 第一种,通过Wireshark工具获取,此时Encode/Decode Class设置如下:
kg.apc.jmeter.samplers.HexStringUDPDecoder
- 使用wireshark或者其他抓包工具,抓取dns网络包,这里用wireshark。如何发出一个dns请求包?在shell或者cmd中执行
nslookup www.baidu.com
即可。wireshark抓取到的包如下: - 右击”Domain Name System(query)”,然后选择”Copy => Byptes(Hex Stream)”, 然后把复制到的数据粘贴到jmeter UDP Request的body中,当然还需要在UDP Request中配置dns服务器的ip和端口(端口默认是53)。最终的请求如下:
- 使用wireshark或者其他抓包工具,抓取dns网络包,这里用wireshark。如何发出一个dns请求包?在shell或者cmd中执行
- 第二种,通过指定解析DNS的域名和记录类型,此时Encode/Decode Class设置如下:
kg.apc.jmeter.samplers.DNSJavaDecoder
-
在jmeter UDP Request的request data中按照如下格式填写信息
www.baidu.com. A IN
- 完成如下:
- 保存,运行即可。剩下的性能监控,指标之类的跟普通http请求类似。