[dnsdist] dnsdist performance
bert hubert
bert.hubert at powerdns.com
Mon Apr 3 20:00:18 UTC 2017
Hello "Nico Mail",
Thank you for contacting us anonymously. My name is Bert Hubert and we work
very hard to provide fast software for you, for free.
Could you try this branch:
git clone -b dnsdist-concur https://github.com/ahupowerdns/pdns.git
cd pdns/pdns/dnsdistdist
autoreconf -i
./configure
make -j4 -k dnsdist
./dnsdist -C /your/dnsdist.conf
Before you compile, try
$ apt-get install g++ libboost-all-dev libtool make pkg-config libmysqlclient-dev libssl-dev liblua-dev
Or the equivalent.
Could you let us know what performance you measure?
We've recently been optimizing the dnsdist cache for SMP use and timings,
and we measure around 500kqps now. Would love to know your results.
Thanks.
Bert
On Mon, Apr 03, 2017 at 04:30:47PM -0300, Nico wrote:
> Hi!
> We found dnsdist very useful and interesting and using it in a couple of
> configurations.
> Now we are testing dnsdist to find the best tuning for our setup,
> and we find the performance is not what we expected (based on what we saw
> in presentations)
>
> We can't get more than 120/150 kqps
> We don't think it's network related, and doesn't seem to be interface or
> udp stack.
>
> If we test whith only
>
> addAction(AllRule(),DropAction())
> We get ~600kqps
>
> with some answer
> addAction(AllRule(),RCodeAction(dnsdist.REFUSED))
> we get ~450kqps
>
> but when we enable cache, and real queries/answers we get stuck at ~120kqps.
> (numbers and test details below.)
>
> The queries are a repeated sequence, so we have 100% cache hit.
>
> Is this a real limit? or there is something else we can tune?
>
> Thanks!
>
> ----------------------------------------------------
> Our config:
> dnsdist-1.1.0 from rpm (also compiled, no difference)
> Centos 7 kernel 3.10.0
> 32 cores CPU E5-2660/ 32GB ram
> 1gb card.
>
> we use resperf and drool to test dns.
> nuutcp and iperf3 to test network (reporting 900mbs udp and 900Kpps udp
> 150bytes pkts)
> and netdata and graphite to see usage/errors/qps, etc.
>
> The tests.
> Always 12 listeners (addLocal)
> ===============================================
> addAction(AllRule(),DropAction())
> drool
> sending ~ 900kqps
> dnsdist web reports: ~650kqps
> udp.inerrrors small
> =================================================
> addAction(AllRule(),RCodeAction(dnsdist.REFUSED))
> drool
> sending ~460Kqps
> dnsdist report ~450kqps
> udp.inerrrors ~0 whith sporadic high lost peak
>
> multiple resperf:
> Sending 650 Kqps
> dnsdist reports ~400kqps
> Udp.inerrors ~250 kpps
>
> sending 300 kqps, reports ~300kqps, lost responses: negligible
> udp.inerrors ~0
> Recv-Q ~0 Send-Q 0-5000
> ========================================================
> Full config:
> 12 addLocal, small cache, many backend servers (almost not used)
>
> cache = newPacketCache(1000, 86400, 0, 60, 60)
> getPool("dns-dist1"):setCache(cache)
> addPoolRule({"0.0.0.0/0"}, "dns-dist1")
>
> setServerPolicy(firstAvailable)
>
> Seding more than 140kqps Recv-Q grows, and queries get lost.
> DNSDIST web interface and graphite counters report between 120kqps and
> 140kqps
> never more.
>
> Netstat output
> Active Internet connections (servers and established)
> Proto Recv-Q Send-Q Local Address Foreign Address State
> udp 14006016 1536 dns-dist1-e:domain 0.0.0.0:*
> udp 16487424 768 dns-dist1-e:domain 0.0.0.0:*
> udp 16766208 3328 dns-dist1-e:domain 0.0.0.0:*
> udp 14918400 9472 dns-dist1-e:domain 0.0.0.0:*
> udp 16750848 2048 dns-dist1-e:domain 0.0.0.0:*
> udp 13962240 768 dns-dist1-e:domain 0.0.0.0:*
> udp 16637184 0 dns-dist1-e:domain 0.0.0.0:*
> udp 12026880 2048 dns-dist1-e:domain 0.0.0.0:*
> udp 15539712 768 dns-dist1-e:domain 0.0.0.0:*
> udp 16772352 0 dns-dist1-e:domain 0.0.0.0:*
> udp 10476288 768 dns-dist1-e:domain 0.0.0.0:*
> udp 15005184 0 dns-dist1-e:domain 0.0.0.0:*
> _______________________________________________
> dnsdist mailing list
> dnsdist at mailman.powerdns.com
> https://mailman.powerdns.com/mailman/listinfo/dnsdist
More information about the dnsdist
mailing list