Решил поинтересоваться производительностью DNS-серверов. В портах нашелся специализированный бенчмарк - утилита dnsperf. Выполним установку утилиты:
# cd /usr/ports/dns/dnsperf && make install clean && rehash |
По завершению установки утилиты приступим к тестированию. Для работы утилиты необходимо сформировать файл с запросами в формате <имя_записи> <тип_записи>. Можно сформировать простенький файл, например:
muff.kiev.ua A |
Также можно загрузить файл с 10 000 000 записей по ссылке http://muff.kiev.ua/files/dnsperf-example.txt [1]
Пример тестирования DNS-сервера:
# dnsperf -d /usr/local/etc/dnsperf.txt -s alpha.muff.kiev.ua -l 60
DNS Performance Testing Tool Nominum Version 2.0.0.0 [Status] Command line: dnsperf -d /usr/local/etc/dnsperf.txt -s alpha.muff.kiev.ua -l 60 [Status] Sending queries (to 195.12.59.30) [Status] Started at: Mon Oct 7 01:31:52 2013 [Status] Stopping after 60.000000 seconds [Status] Testing complete (time limit) Statistics: Queries sent: 535937 Queries completed: 535937 (100.00%) Queries lost: 0 (0.00%) Response codes: NOERROR 535937 (100.00%) Average packet size: request 28, response 213 Run time (s): 60.000762 Queries per second: 8932.169895 Average Latency (s): 0.000785 (min 0.000399, max 0.056612) Latency StdDev (s): 0.000403 |
Некоторые ключи запуска dnsperf, ознакомиться с которыми можно по запуску команды dnsperf -h:
- -f - указываем, какой протокол будет использоваться при отправке запросов. Допустимые значения: inet - IPv4, inet6 - IPv6, any - IPv4 и IPv6. По умолчанию - any.
- -s - опрашиваемый сервер, тоесть сервер, на который будем отправлять запросы. По умолчанию - 127.0.0.1.
- -p - порт, на который будем отправлять запросы. По умолчанию - 53.
- -a - локальный адрес, с которого будут отправляться запросы.
- -x - локальный порт, с которого будут отправляться запросы. По умолчанию - 0.
- -d - путь к файлу данных с запросами. По умолчанию - stdin.
- -c - количество имитируемых клиентов. Для каждого клиента используется уникальный исходящий номер порта.
- -n - количество раз "прогонки" файла с запросами.
- -l - запуск тестирования на указаное количество времени в секундах.
- -b - размер буферов отправки/приема в килобайтах.
- -t - таймаут ожидания ответа в секундах. По умолчанию - 5.
- -e - использовать EDNS 0. В отправленых пакетах добавляется запись OPT (RFC 2671).
- -D - задать бит DNSSEC OK.
- -y - использовать TSIG алгоритм, логин и пароль. Формат - [algorithm:]name:secret.
- -q - максимальное количество отправляемых запросов. По умолчанию - 100.
- -Q - ограничение количества отправляемых запросов в секунду.
- -S - отображать статистику запросов в секунду каждые N секунд.
- -u - отправлять динамически обновляемые запросы.
- -v - режим отладки. Выводится отчет о каждом запросе в stdout.
- -h - отображение этой подсказки.
Основные ключи использования описаны. Теперь можно приступать к тестированию возможностей DNS-сервера, используя полученные знания.