[Pdns-users] Recursor QPS ceiling

bert hubert bert.hubert at netherlabs.nl
Mon Dec 22 20:30:11 UTC 2014

On Mon, Dec 22, 2014 at 02:39:49PM +0100, Morten Stevens wrote:
> Here is my result compared with bind and unbound:
> 1) pdns-recursor 3.6.2: 169k QPS
> 2) unbound 1.5.1: 327k QPS
> 3) bind 9.9.4-P2: 251k QPS

Well - let me describe how we like to do our benchmarking.

1) Use tcpdump to record actual traffic that is representative of your users
2) Use dnsreplay with the --speedup flag to see how much 'headroom' you have
on your platform
3) Study the graphs like http://xs.powerdns.com/metronome/ to see if
response times & CPU loads are where you want them

The issue is that fully cached performance is great, but this is like how
fast a car drives on a sunny day on a straight road - perhaps 250kph. 

In real life, what we want to know is how the car handles in actual traffic,
on rough roads, through corners etc. 

The real work in DNS is for uncached queries, for difficult queries, for
hammering clients, for domains with timeouts. 

Of course, every once in a while, we too suffer from a benchmark-driven
optimization round. And then we might suddenly care a lot about 100% cached
queries too ;-)

But for now, winning the battle for "rock solid service under elevated real
loads" is our goal.

> I am surprised that bind9 is much faster than pdns-recursor in my test...

Fwiw, at a recent (few weeks ago) huge nordic deployment, bind9 was replaced
by pdns-recursor because bind9 could not take the (real life) load.

Further to what Robert noted down the thread, actual benchmarking at
200kqps+ is hard work on the benchmarking tools as well. In some of the more
realistic tests, multiple client systems have been used to get actual

dnsreplay (described lightly on https://doc.powerdns.com/md/tools/analysis/
) sometimes also does not achieve the query rates you want on a single


More information about the Pdns-users mailing list