標籤:
dnsperf是我最近寫的一個開源的DNS壓力測試工具,使用者可以用它來對DNS伺服器或者Local DNS做壓力測試。dnsperf目前的實現是單進程模式,通過epoll非阻塞地處理網路事件。
dnsperf的地址:https://github.com/cobblau/dnsperf
參數詳解
Dnsperf 支援下面的這些命令列參數:
-s 用來指定DNS伺服器的IP地址,預設值是127.0.0.1
-p 用來指定DNS伺服器的連接埠,預設值是53
-d 用來指定DNS訊息的內容檔案,該檔案中包含要探測的網域名稱和資源記錄類型,見下文
-t 用來指定每個請求的逾時時間,預設值是3000ms
-Q 用來指定本次壓測的最大請求數,預設值是1000
-c 用來指定並發探測數,預設值是100. dnsperf會從-d指定的檔案中隨機選取100個座位探測網域名稱來發送DNS請求.
-l 用來指定本次壓測的時間,預設值是無窮大。
-e 本選項通過EDNS0,在OPT資源記錄中運用edns-client-subnet來指定真實的client ip.
-i 用來指定前後探測的時間間隔,因為dnsperf是一個壓測工具,所以本選項目前還不支援。
-P 指定用哪個傳輸層協議發送DNS請求,udp或者tcp。預設值是udp
-f 指定用什麼地址類型發送DNS請求,inet或者inet6。預設值是inet
-v 除了標準的輸出外,還輸出每個相應碼的個數。
-h 列印協助
資料檔案樣本:
上文中提到,-d選項指定資料檔案名,資料檔案樣本如下:
| 123 |
# This is a comment and is ommited# The columns after column 2 will be ommited if one line contains more than 3 colums.www.app1.com A |
資料檔案中以“#”開頭的行被認為是注釋行,會被dnsperf忽略。
其中有效資料由兩列組成,第一列是查詢網域名稱,第二列是查詢的資源類型,dnsperf支援的資源類型如下:
A,NS,MD,MF,CNAME,SOA,MB,MG,MR,NULL,WKS,PTR,HINFO,MINFO,MX,TXT,AAAA,SRV,NAPTR,A6,ASFR,MAILB,MAILA,ANY.
效能評測指標
是一個樣本輸出:
| 12345678910111213 |
DNS Performance Testing Tool [Status] Processing query data[Status] Sending queries to 127.0.0.1:53time up[Status]DNS Query Performance Testing Finish[Result]Quries sent: 35650[Result]Quries completed: 35578[Result]Complete percentage: 99.80% [Result]Elapsed time(s): 1.00000 [Result]Queries Per Second: 35650.0000 |
標準輸出中,queies sent是指本次探測發送的總請求數,queries completed是指本次探測收到響應的請求數,complete percentage是指本次探測的成功率(queies_completed/queries_sent),elapsed time是指本次探測的時間,queries per second是指本次探測的QPS。
DNS壓力測試工具dnsperf簡介