Недавно ко мне по RSS прилетела ссылочка на статью под названием «Faster Browsing In Linux With Local DNS Cache». Материал сам по себе довольно интересный, но я в первую очередь почерпнул оттуда название замечательной утилитки
dig
, способной показать время DNS запроса. В Debian утилита эта расположена в пакете dnsutils
, который совсем нетрудно поставить штатными средствами дистрибутива:sudo aptitude install dnsutilsПосле этого говорим нечто вроде
dig google.comи наблюдаем результат:
; <<>> DiG 9.7.0-P1 <<>> google.comОсновной интерес представляет строка Query time (можно дописать после
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28785
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 168 IN A 74.125.87.103
google.com. 168 IN A 74.125.87.147
google.com. 168 IN A 74.125.87.99
google.com. 168 IN A 74.125.87.104
google.com. 168 IN A 74.125.87.105
google.com. 168 IN A 74.125.87.106
;; AUTHORITY SECTION:
google.com. 110951 IN NS ns3.google.com.
google.com. 110951 IN NS ns1.google.com.
google.com. 110951 IN NS ns2.google.com.
google.com. 110951 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns3.google.com. 107156 IN A 216.239.36.10
ns1.google.com. 107156 IN A 216.239.32.10
ns4.google.com. 107156 IN A 216.239.38.10
ns2.google.com. 107156 IN A 216.239.34.10
;; Query time: 8 msec
;; SERVER: 195.95.171.2#53(195.95.171.2)
;; WHEN: Mon May 3 17:10:01 2010
;; MSG SIZE rcvd: 260
dig
нечто вроде | grep "Query time"
, чтобы не засорять терминал лишним выводом) — из неё-то мы и узнаём время, затраченное на наш DNS запрос. Итак, теперь каждый из нас может объективно сравнить пользу от перехода на Google Public DNS (или любой другой DNS сервис) — достаточно просто прогнать dig
пару сот раз и посчитать среднее время:x=0; server=8.8.8.8; host="yandex.ru"; queries=128; for i in `seq $queries`; do \В переменной
let x+=`dig @${server} $host | grep "Query time" | cut -f 4 -d " "`; \
done && echo "scale=3;($x/${queries})" | bc
server
— IP (хотя можно и имя, но это наверняка повлияет на результат теста); в host
— проверяемый хост; queries
— количество запросов (чем больше, тем лучше, естественно).Спокойной ночи! :)
Копируете статью — поставьте ссылку!
3 комментария:
Надо в начале обнулить переменную Х, а то результат суммируется.
[code]x=0; server=8.8.8.8; host="yandex.ru"; queries=128; for i in `seq $queries`; do let x+=`dig @${server} $host | grep "Query time" | cut -f 4 -d " "`; done && echo "scale=3;($x/${queries})" | bc[/code]
Андрей
А в gentoo dig в каком пакете никто не знает?
Андрей комментирует:
>Надо в начале обнулить переменную Х, а то результат суммируется.
Да, точно. Спасибо, исправлено!
puzan комментирует:
>А в gentoo dig в каком пакете никто не знает?
Gentoo-Portage Search говорит, что в net-dns/bind-tools
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.