CoreDNS篇7-性能壓測

本文主要用于介紹如何編譯安裝queryperf來對DNS服務(wù)器進行壓測,以及CoreDNS常見的幾種配置下的壓測性能表現(xiàn)。

1、queryperf

1.1 編譯安裝

queryperf是bind9出品的一款測試dns服務(wù)器性能的工具,目前在9.12.4版本的bind源碼中還存在,再往后的新版本就沒看到有queryperf了。

[root@coredns1 home]# wget https://ftp.isc.org/isc/bind9/9.12.4/bind-9.12.4.tar.gz
[root@coredns1 home]# tar -zxvf bind-9.12.4.tar.gz
[root@coredns1 home]# cd bind-9.12.4/contrib/queryperf
[root@coredns1 queryperf]# ./configure
[root@coredns1 queryperf]# make
[root@coredns1 queryperf]# file queryperf
queryperf: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped

1.2 常用操作

# 將編譯好的二進制文件直接復(fù)制到系統(tǒng)的bin目錄中即可全局操作
[root@coredns1 queryperf]# cp queryperf /usr/local/bin/


[root@coredns1 home]# queryperf -h

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $


Usage: queryperf [-d datafile] [-s server_addr] [-p port] [-q num_queries]
                 [-b bufsize] [-t timeout] [-n] [-l limit] [-f family] [-1]
                 [-i interval] [-r arraysize] [-u unit] [-H histfile]
                 [-T qps] [-e] [-D] [-R] [-c] [-v] [-h]
  -d specifies the input data file (default: stdin)
  -s sets the server to query (default: 127.0.0.1)
  -p sets the port on which to query the server (default: 53)
  -q specifies the maximum number of queries outstanding (default: 20)
  -t specifies the timeout for query completion in seconds (default: 5)
  -n causes configuration changes to be ignored
  -l specifies how a limit for how long to run tests in seconds (no default)
  -1 run through input only once (default: multiple iff limit given)
  -b set input/output buffer size in kilobytes (default: 32 k)
  -i specifies interval of intermediate outputs in seconds (default: 0=none)
  -f specify address family of DNS transport, inet or inet6 (default: any)
  -r set RTT statistics array size (default: 50000)
  -u set RTT statistics time unit in usec (default: 100)
  -H specifies RTT histogram data file (default: none)
  -T specify the target qps (default: 0=unspecified)
  -e enable EDNS 0
  -D set the DNSSEC OK bit (implies EDNS)
  -R disable recursion
  -c print the number of packets with each rcode
  -v verbose: report the RCODE of each response on stdout
  -h print this usage

在壓測之前需要我們自己準(zhǔn)備壓測的測試數(shù)據(jù),格式為域名 查詢類型,如:

tinychen.com A
tiny777.com A
tinychen.com MX
tiny777.com MX
tinychen777.com AAAA

常用的操作命令有:

# 對192.168.1.1進行壓測,查詢域名為文件query.domain.list的內(nèi)容
queryperf -s 192.168.1.1 -d query.domain.list

# 對192.168.1.1的5353端口進行壓測,查詢域名為文件query.domain.list的內(nèi)容
queryperf -s 192.168.1.1 -p 5353 -d query.domain.list

# 對192.168.1.1的5353端口進行壓測,查詢域名為文件query.domain.list的內(nèi)容,壓測壓力為1000qps
queryperf -s 192.168.1.1 -p 5353 -d query.domain.list -T 1000

# 對192.168.1.1的5353端口進行壓測,查詢域名為文件query.domain.list的內(nèi)容,壓測壓力為1000qps,每次查詢超時時間為3s
queryperf -s 192.168.1.1 -p 5353 -d query.domain.list -T 1000 -t 3

2、壓測數(shù)據(jù)

2.1 機器硬件配置

  • 虛擬機為16核16G配置,宿主機為R730,配置是雙路E5-2640 v4+82599萬兆網(wǎng)卡

  • 物理機為R640,配置是雙路銀牌Silver 4114+128G內(nèi)存+x710萬兆萬卡

這里需要額外提一下,CoreDNS比較吃網(wǎng)卡和CPU,對于硬盤IO的要求并不算特別高(主要取決于寫日志的量),對內(nèi)存占用較低

2.2 CoreDNS配置

CoreDNS配置的復(fù)雜程度會直接影響具體實例的性能表現(xiàn),簡單來說就是啟用的插件越多,性能表現(xiàn)越差;比較影響性能表現(xiàn)的插件主要是日志相關(guān)的插件,如log插件開啟全量日志記錄,我們測試啟用的插件主要有:log、errors、bind、reload、ready、prometheus、loadbalance、cache、acl、secondary、transfer、hosts、forward、import、file、kubernetes。

2.3 數(shù)據(jù)匯總

機器配置 CoreDNS配置 性能表現(xiàn)
虛擬機 多插件配置+全量日志記錄 30K qps
物理機 多插件配置+全量日志記錄 55K qps
物理機 多插件配置+關(guān)閉log和error插件 70K qps
物理機 最少插件配置 75K qps

2.4 Q&A

  1. 虛擬機和物理機數(shù)據(jù)差距并不算特別大?

    首先要明確:CoreDNS并沒有完全吃滿物理機上面的所有硬件配置,因此在物理機這里的性能表現(xiàn)瓶頸處于CoreDNS本身,而虛擬機的性能表現(xiàn)瓶頸才是硬件配置;

    其次要知道:我們的虛擬機相互之間的影響比較嚴(yán)重,30K qps的性能表現(xiàn)是同宿主機上面的其他虛擬機基本處于摸魚狀態(tài),由于宿主機資源超售嚴(yán)重,一旦其他虛擬機利用率過高,必然會影響性能表現(xiàn);而使用物理機則不用擔(dān)心這類問題;

  2. log插件對性能的影響?

    log插件對性能的影響確實較大,但是僅限于全量寫入查詢?nèi)罩镜臅r候,如果對普通的查詢?nèi)罩镜男枨蟮陀谛阅苄枨螅梢钥紤]只配置部分特殊類型日志,如只記錄錯誤日志log denial error;

    還有些同學(xué)可能會擔(dān)心日志落盤速度慢是否會影響查詢響應(yīng)速度,實測在使用rsyslog記錄日志的時候,所有查詢請求均響應(yīng)完之后一段時候內(nèi),rsyslog還在落盤相關(guān)日志,因此可以確定邏輯上并非是必須要等日志落盤結(jié)束后才響應(yīng)請求;

  3. Prometheus插件采集到的數(shù)據(jù)和queryperf的數(shù)據(jù)不一致?

    如果壓測的時間太短(幾秒到幾分鐘不等),會導(dǎo)致高峰時間持續(xù)太短而Prometheus插件無法準(zhǔn)確暴露數(shù)據(jù),同時還要考慮Prometheus服務(wù)端的采集頻率已經(jīng)Grafana面板的顯示設(shè)置等;最好的方式是進行一段時間較長的壓測,如三十分鐘以上;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 性能與壓力測試 @[toc] 一、性能監(jiān)控 1、jvm內(nèi)存模型 程序計數(shù)器 Program Counter Reg...
    runewbie閱讀 831評論 0 1
  • 壓測流程規(guī)范: 1. 壓測機器申請 壓測域名: 詢問運維人員 壓測機器: 看公司使用的服務(wù)器 例如:服務(wù)機器(...
    檸檬萌呀閱讀 1,896評論 0 1
  • 文章是基于“Kubernetes權(quán)威指南”和博客[https://kuboard.cn/learning/]的學(xué)習(xí)...
    彥幀閱讀 1,274評論 0 1
  • 一、壓測的目的 二、壓測的完整流程 三、壓測場景分析/組織測試腳本 四、壓測數(shù)據(jù)準(zhǔn)備 五、壓測指標(biāo)監(jiān)控 七、壓測結(jié)...
    簡書遇見簡書閱讀 1,711評論 0 2
  • 本文介紹壓測是什么,解釋壓測的專屬名詞,教大家如何壓測。介紹市面上的常見壓測工具(ab、locust、Jmeter...
    link1st閱讀 7,313評論 2 22

友情鏈接更多精彩內(nèi)容