Чем плох bind9
До поры до времени я как и многие полагал что bind это хороший DNS сервер и искать ему замену смысла нет, к тому же во FreeBSD он в base system.
Но выяснилось, что под большой нагрузкой в качестве кэширующего
рекурсора bind9 работает просто отвратительно.
(
Read more... )
Comments 25
Reply
правило работают хуже FSM (и имеют больше проблем с надежностью). Другое дело что на FSM не все задачи можно положить (без титанических усилий), но рекурсивный DNS хорошо реализуется в виде FSM. Что и сделано в bind и Powerdnsd. Будет время и pdnsd протестирую. Но пока кандидаты production это powerdns recursor и maradns (он хоть и тредовый но с кешем по описанию хорошо работает).
Что касается djbdnsd то он уже 5 лет не поддерживается и у него дурацкая лицензия, которая не позволяет распространять измененный код. Часть его недостатков описано тутПока кандидаты в production это PowerDNS recursor и MaraDNS, но ( ... )
Reply
Буду ждать тестирования. Интересно. Пишите результаты ;-)
Reply
Что касается того, что не параллелится то параллелить нужно только тогда когда есть блокирующиеся операции. Сокеты умеют работать в неблокирующемся режиме, дисковые операции кэширующему dns не нужны, задач которые требуют длительной работы CPU при правильном дизайне тоже быть не должно.
Безусловно у FSM есть свои недостатки, но в такой задаче как кэширующий dns проявляется только один из них (и то не в полной мере) - более ысокая сложность реализации, по сравнению с тредовой моделью.
Reply
(The comment has been removed)
Во базовой системе FreeBSD не предусмотрена сборка с тредами даже через knob в make.conf...
Reply
Может кому тоже пригодится
Reply
Переход от BIND к djbdns был вызван ужором CPU time.
C 90% cpu load на BIND ушли к >25% на djbdns
Организация - крупный телеком-ISP в Москве.
http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software
Reply
точно такая же ситуация, dnscache спас от "high CPU load"
правда сначало это привело к значительным нагрузкам на IO т.к. по умолчанию dnscache логирует все запросы, но как только эта возможнасть была отключена
загрузка серверов (2 рекурсивных DNS сервера) упала на порядок.
Reply
http://www.tnpi.biz/internet/dns/djbdns-freebsd.shtml
It should also be noted that you are still piping logs from dnscache to multilog which then discards them. If your CPU is pegged and you want a bit more of a performance tweak, edit the dnscache/run file and change "exec 2>&1" to "exec 1>/dev/null 2>&1". That entirely disables any and all logging.
Reply
Reply
SunOS e22 5.8 Generic_108528-10 sun4u sparc SUNW,Ultra-60
bind 9.3.3 в кач-ве кеширующего нса, запущен с -n 2, собран с тредами.
Спустя некоторое время(дня 3-4) он отжирает где-то около гига памяти и %40 cpu. При этом в часы пик среднее время ответа доходит до 40-60мс(пока бинд не разжиреет, такого не наблюдается).
Вопрос: имеет ли смысл собрать бинд без тредов и пускать 2 экземпляра (на разных адресах) с -n 1 но с привязкой по процессорам и ограничением datasize?
Reply
У нас стоит
max-cache-size 256M;
Чем больше объем кэша, тем больше загрузка CPU. А при маленьком маленький hit-rate. Поэтому нужно что то среднее. Я считаю, что больше 256Mb - 512Mb для bind'а ставить не стоит. С большим кешем bind плохо работает.
Запускать 2 разных процесса смысла нет - у каждого будет свой независимый кэш и эффективность кэширования от этого упадет.
Reply
Leave a comment