У нас есть привязка 9.8.1.dfsg.P1-4ubuntu0.13 в ubuntu 12.04, который работает на не сильно загруженном сервере (средняя нагрузка: 0,19, 0,12, 0,13) и обслуживает запросы для небольшой офисной сети с рабочими станциями macos и ubuntu.
Я выполнил несколько тестов DNS в скрипте на контейнере, который работает как DNS-сервер, и отправил результаты в Infxdb.
#!/bin/bash
while true
do
rndc flush
bind_timeout=$( dig @192.168.128.3 redhat.com | grep 'Query time' | awk '{ print $4 }' )
google_timeout=$( dig @8.8.8.8 redhat.com | grep 'Query time' | awk '{ print $4 }' )
yandex_timeout=$( dig @77.88.8.8 redhat.com | grep 'Query time' | awk '{ print $4 }' )
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "bind,server=bind,without_cache=yes value=$bind_timeout" &
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "google,server=google,without_cache=yes value=$google_timeout" &
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "yandex,server=yandex,without_cache=yes value=$yandex_timeout" &
wait
bind_timeout=$( dig @192.168.128.3 redhat.com | grep 'Query time' | awk '{ print $4 }' )
google_timeout=$( dig @8.8.8.8 redhat.com | grep 'Query time' | awk '{ print $4 }' )
yandex_timeout=$( dig @77.88.8.8 redhat.com | grep 'Query time' | awk '{ print $4 }' )
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "bind,server=bind,without_cache=no value=$bind_timeout" &
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "google,server=google,without_cache=no value=$google_timeout" &
curl -i -XPOST 'http://ts.example.lab:8086/write?db=dnstest' -d "yandex,server=yandex,without_cache=no value=$yandex_timeout" &
wait
sleep 5
done
Я обнаружил, что привязка отвечает на запросы медленнее, чем 8.8.8.8 и 77,88,8,8. Это можно увидеть на графиках:
Очистка кеша перед первой серией запросов с rndc flush
. Bind использует Google 8.8.8.8 и 8.8.4.4 в качестве экспедиторов:
Никогда не очищайте кеш запущенного bind. Bind использует Google 8.8.8.8 и 8.8.4.4 в качестве экспедиторов:
Очистка кеша перед первой серией запросов с rndc flush
. Bind использует обновленный список корневых серверов в качестве серверов пересылки:
Никогда не очищайте кеш запущенного bind. Bind использует обновленный список корневых серверов в качестве серверов пересылки:
Почему максимальное время запроса (около 5 КБ на первом графике и 2,5 КБ на третьем графике) с общедоступным DNS Google больше, чем корневые серверы?
Почему сквозная привязка запросов выполняется медленнее, чем прямой запрос общедоступных DNS-серверов?
Может что-то не так в моих тестах?
ОБНОВЛЕНИЕ 1
На графиках TTL 20 секунд - это неправильно. TTL для redhat.com составляет 60 секунд.
Ваши тесты измеряют общее время выполнения вашего запроса, включая
Результаты вполне соответствуют ожиданиям.
Следовательно, запросы к вашему локальному серверу BIND без предварительной очистки кеша являются самыми быстрыми, и на них не влияет конфигурация сервера пересылки. Запросы к локальному серверу BIND после очистки кеша и с серверами Google, настроенными в качестве пересылки, медленнее, чем прямые запросы к серверам Google, потому что они добавляют к последним накладные расходы, связанные с первым прохождением через локальный сервер BIND.