[Pdns-users] PowerDNS cannot handle the load?

Brad Knowles brad.knowles at skynet.be
Wed Apr 23 23:11:20 UTC 2003

At 10:23 AM -0700 2003/04/23, Mike Benoit wrote:

>  Consistent, but how long do they take to startup? BIND takes so long to
>  startup because it basically pre-caches all the zones (before it starts
>  serving any even?).

	Not true, not for BIND 9 at least.  BIND 9 starts answering 
queries immediately on startup, at least for the zones that it has 
loaded so far (obviously, you can't answer for data you don't have).

>                      PDNS approaches this a different way, and simply
>  starts serving answers immediately after starting.

	PowerDNS may have "started" and trying to answer queries 
immediately on startup, but like BIND it can't answer for data it 
hasn't loaded yet.  The issue is how fast can PowerDNS get the data 
from the back-end database and put that into its cache.

>  I don't think your comparing apples to apples here. Try timing a script
>  that does this:
>  start bind

	In background.  Don't wait for the start to complete before you 
start firing queries at it.  You want to look at how it handles 
queries during startup.

>  run test 1
>  run test 1
>  run test 1

	These will need to be timed runs, or runs of a fixed number of 
queries.  Pick your poison.  If you make them timed runs of short 
period, you can get some measure of just how long it takes to go from 
starting BIND (in background) to where it has loaded all the zones.

>  stop bind
>  Might want to reboot before each run. Now try PDNS
>  start pdns

	Same deal -- start in background.

>  Even this isn't really fair, since BIND can load all the zones with
>  little overhead, but to get PDNS to the same state (all zones in cache)
>  you have to query every zone, thus including the overhead of sending DNS
>  queries to it.
>  Perhaps Bert would be interested in creating functionality to auto-cache
>  zones? ie: "pdns_control cache_all_zones" or "pdns_control cache
>  <domain>". I don't see this as being that useful though.

	Once you've done the queries that will hit all records in all 
zones, you can test the steady-state performance of both servers, 
which is what we really care about.

	You cause all records in all zones to be loaded (thus causing the 
cache to be maximized in size) because you don't know, a priori, 
precisely which records will be asked for in what order in a 
real-world scenario.  Sure, you can capture a complete list of 
queries that occur over a given period of time and use that as your 
test input, but there's nothing to say that the pattern of queries 
during this period of time is an accurate simulation of future 

	In the case of BIND, the real-world performance should be no 
worse than this test shows, assuming the queries are generated with a 
comparable frequency and latency.  However, in the case of PowerDNS, 
the real-world performance might actually be better than the 
benchmark, because you shouldn't be caching all records.

Brad Knowles, <brad.knowles at skynet.be>

"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."
     -Benjamin Franklin, Historical Review of Pennsylvania.

GCS/IT d+(-) s:+(++)>: a C++(+++)$ UMBSHI++++$ P+>++ L+ !E-(---) W+++(--) N+
!w--- O- M++ V PS++(+++) PE- Y+(++) PGP>+++ t+(+++) 5++(+++) X++(+++) R+(+++)
tv+(+++) b+(++++) DI+(++++) D+(++) G+(++++) e++>++++ h--- r---(+++)* z(+++)

More information about the Pdns-users mailing list