Тест производительности DNS
Постановка задачи
Непроходимо протестировать производительность DNS сервера. Имеется DNS сервер, которому делегировано порядка 5000 доменов.
Будем использовать утилиты dnsperf and resperf. Сайт разработчика: http://www.nominum.com/measurement-tools/
Установка утилит тестирования производительности на ubuntu
Ставим необходимые пакеты
sudo apt-get install -y bind9utils libbind-dev libkrb5-dev libssl-dev libcap-dev libxml2-dev make
Скачиваем исходные коды и компилируем
cd /usr/local/src wget ftp://ftp.nominum.com/pub/nominum/dnsperf/2.0.0.0/dnsperf-src-2.0.0.0-1.tar.gz tar xfvz dnsperf-src-2.0.0.0-1.tar.gz cd dnsperf-src-2.0.0.0-1 ./configure make make install
Если получили ошибку типа fatal error: isc/hmacsha.h: No such file or directory
, то это значит мы натолкнулись на баг bug=692467.
В пакете libbind-dev отсутствует необходимый нам файл hmacsha.h, его нужно взять из исходников:
cd /tmp wget ftp://ftp.isc.org/isc/bind9/9.9.0/bind-9.9.0.tar.gz tar zxvf bind-9.9.0.tar.gz cp -p bind-9.9.0/lib/isc/include/isc/hmacsha.h /usr/include/isc/ ln -s /usr/lib/i386-linux-gnu/libgssapi_krb5.so.2.2 /usr/lib/i386-linux-gnu/libgssapi_krb5.so
Тестируем
Готовим файл со списком запросов.
Есть файл all-zones.txt
со списком доменов (один домен на строку) вида:
domain1.com domain2.com ... domainN.com
Сделаем из него файл requests.txt
вида:
domain1.com SOA domain1.com A domain1.com MX domain1.com NS domain1.com TXT domain2.com SOA domain2.com A domain2.com MX domain2.com NS domain2.com TXT ... domainN.com SOA domainN.com A domainN.com MX domainN.com NS domainN.com TXT
для этого выполняем следующую команду: cat all-zones.txt | awk '{print $0" SOA\n"$0" A\n"$0" NS\n"$0" MX\n"$0" TXT"}' > requests.txt
Запускаем
Тест авторативного ДНС сервера:
dnsperf -d ./requests.txt -s <адрес сервера>
Тест рекурсивного ДНС сервера (предварительно нужно скачать файл со списком запросов)
resperf-report -s 192.168.1.80 -p 53 -d ../queryfile-example-current
Запуск resperf-report
с постоянной нагрузкой 10тыс. запросов в секунду на 60 секунд:
resperf-report -s 192.168.1.80 -p 53 -d ../queryfile-example-current -m 10000 -c 60
Ссылки
Официальный сайт dnsperf
man по resperf
man по resperf-report
Enjoy!