Dns tests

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Сравнение производительности разных DNS-серверов

Задача теста

Задача теста: cравнить производительность 3-х авторитативных DNS-серверов и выбрать наиболее производительный для дальнейего использования Для тестирования используем утилиту dnsperf (http://www.nominum.com/services/measurement_tools.php)

Подготовка

Запускаем и настраиваем 3 сервиса - tinydns (из пакета djbdns), bind и powerdns

udp        0      0 172.16.30.146:53        0.0.0.0:*                           14232/tinydns
udp        0      0 172.16.30.147:53        0.0.0.0:*                           16044/named
udp        0      0 172.16.30.148:53        0.0.0.0:*                           21494/pdns_server-i

Для tinydns - вытаскиваем зоны из bind при помощи axfr-get, для named - просто копируем файлы зон, powerdns имеет собственный механизм и вытаскивает зоны сам. Проверить это можно по соответсвующим записям в базе данных

mysql> select count(*) from records;
+----------+
| count(*) |
+----------+
|    21642 |
+----------+
1 row in set (0.00 sec)

итого - имеем 3 работающих авторитативных сервера, каждый слушает свой адрес, отвечают они за одни и те же зоны.


Из файлов зон bindа создаем файлик с запросами примерно такого вида

...
forum.airbites.kh.ua A
fleur.airbites.kh.ua A
oberon.airbites.kh.ua A
mill.airbites.kh.ua A
foto.airbites.kh.ua A
misery.airbites.kh.ua A
....

т.е. домен и что нас в тесте про него интересует. Всего у меня получилось 13921 записей.

Для чистоты эксперемнта каждый запрос записываем 4 раза.


TinyDNS

anarxist bin # ./dnsperf -d ./real_q3 -s 172.16.30.146

DNS Performance Testing Tool

Nominum Version 1.0.1.0

[Status] Processing input data
[Status] Sending queries (to 172.16.30.146)
[Timeout] Query timed out: msg id 12387
[Timeout] Query timed out: msg id 12640
[Timeout] Query timed out: msg id 12988
[Timeout] Query timed out: msg id 13313
[Timeout] Query timed out: msg id 13340
[Timeout] Query timed out: msg id 13877
[Timeout] Query timed out: msg id 26308
[Timeout] Query timed out: msg id 26561
[Timeout] Query timed out: msg id 26909
[Timeout] Query timed out: msg id 27234
[Timeout] Query timed out: msg id 27261
[Timeout] Query timed out: msg id 27798
[Timeout] Query timed out: msg id 40229
[Timeout] Query timed out: msg id 40482
[Timeout] Query timed out: msg id 40830
[Timeout] Query timed out: msg id 41155
[Timeout] Query timed out: msg id 41182
[Timeout] Query timed out: msg id 41719
[Timeout] Query timed out: msg id 54150
[Timeout] Query timed out: msg id 54403
[Timeout] Query timed out: msg id 54751
[Timeout] Query timed out: msg id 55076
[Timeout] Query timed out: msg id 55103
[Timeout] Query timed out: msg id 55640
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         55684 queries
  Queries completed:    55660 queries
  Queries lost:         24 queries

  Avg request size:     55 bytes
  Avg response size:    156 bytes

  Percentage completed:  99.96%
  Percentage lost:        0.04%

  Started at:           Sun Oct 19 20:36:29 2008
  Finished at:          Sun Oct 19 20:36:40 2008
  Ran for:              11.231213 seconds

  Queries per second:   4955.831574 qps


Повторяем тест еще 2 раза

  Queries per second:   4955.831574 qps
  Queries per second:   4953.973704 qps

Расхождения в разных замерах незначительны.

Bind

./dnsperf -d ./real_q3 -s 172.16.30.147

DNS Performance Testing Tool

Nominum Version 1.0.1.0

[Status] Processing input data
[Status] Sending queries (to 172.16.30.147)
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         55684 queries
  Queries completed:    55684 queries
  Queries lost:         0 queries

  Avg request size:     55 bytes
  Avg response size:    130 bytes

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Sun Oct 19 20:39:40 2008
  Finished at:          Sun Oct 19 20:39:42 2008
  Ran for:              2.267926 seconds

  Queries per second:   24552.829325 qps

Повторяем тест еще 2 раза

  Queries per second:   24531.790573 qps
  Queries per second:   24697.852266 qps

PowerDNS

anarxist bin # ./dnsperf -d ./real_q3 -s 172.16.30.148

DNS Performance Testing Tool

Nominum Version 1.0.1.0

[Status] Processing input data
[Status] Sending queries (to 172.16.30.148)
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         55684 queries
  Queries completed:    55684 queries
  Queries lost:         0 queries

  Avg request size:     55 bytes
  Avg response size:    73 bytes

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Sun Oct 19 20:42:24 2008
  Finished at:          Sun Oct 19 20:42:25 2008
  Ran for:              1.668728 seconds

  Queries per second:   33369.129061 qps

Повторяем тест еще 2 раза

  Queries per second:   33367.809328 qps
  Queries per second:   33868.718269 qps


Наводит на мысли, что такое отставание tinydns связано с тем что что-то не так с файлом запросов, только при запросе к tinydns возникают ошибки

Выводы

Дальнейшее исследование показало, что после "выразания" из файла блока доменов (я так и не нашел какие, просто делил файл на пополам, отбрасывая ту половину что вызывала ошибку) ситуация немного изменилась -

  Queries per second:   14896.374058 qps

Однако, когда я попробовал увеличить файл с запросами раз в 10 (простым cat >> new_file) то ошибка стала возникать снова - причем в произвольных запросах, что меня немного смущает.

Думаю, что дело все же не в запрсах, а в работе tinydns. Соотетвенно, я не вижу причин его использовать.