背景
很多場景下,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請求類似。