DNS Load Testing Results

November 20, 2007

Years ago I stopped running BIND as an Authoritative Name Server within my sites – initially this was for security reasons but was quickly eclipsed for maintainability. After running almost every alternate DNS software available we've ended up running a mix of PowerDNS and BIND (BIND sneaked back in because of $GENERATE is just to convenient for in-addr.arpa domains). We are running PowerDNS against a Master -> Slave MySQL backend configuration and even though the maintainability is super easy (what could be better than a web interface to a SQL backend) I've always been a little paranoid about the potential loss of the DB backend and the loss of our DNS services as a result. I've always personally liked the simplicity of Tinydns from DJBDNS but the assumed performance loss on my part has always kept me at bay. Well today I broke down and ran some benchmarks. You could say that the results surprised me a little…
The first test is tinydns-1.05

> ./queryperf -d inputfile -s 207.171.12.31DNS Query Performance Testing ToolVersion: $Id: queryperf.c,v 1.8.192.3 2005/10/29 00:21:12 jinmei Exp $[Status] Processing input data[Status] Sending queries (beginning with 207.171.12.31)[Status] Testing completeStatistics:Parse input file:     onceEnded due to:         reaching end of fileQueries sent:         600000 queriesQueries completed:    600000 queriesQueries lost:         0 queriesQueries delayed(?):   0 queriesRTT max:              0.087436 secRTT min:              0.000055 secRTT average:          0.002845 secRTT std deviation:    0.000680 secRTT out of range:     0 queriesPercentage completed: 100.00%Percentage lost:        0.00%Started at:           Tue Nov 20 15:29:18 2007Finished at:          Tue Nov 20 15:30:44 2007Ran for:              85.816039 secondsQueries per second:   6991.700001 qps

Note: Tinydns is running with a 150 MByte data.cdb
The second test is PowerDNS 2.9.21 w/ MySQL:

> ./queryperf -d inputfile -s 207.171.11.22DNS Query Performance Testing ToolVersion: $Id: queryperf.c,v 1.8.192.3 2005/10/29 00:21:12 jinmei Exp $[Status] Processing input data[Status] Sending queries (beginning with 207.171.11.22)[Status] Testing completeStatistics:Parse input file:     onceEnded due to:         reaching end of fileQueries sent:         600000 queriesQueries completed:    600000 queriesQueries lost:         0 queriesQueries delayed(?):   0 queriesRTT max:              0.086546 secRTT min:              0.000401 secRTT average:          0.002508 secRTT std deviation:    0.000601 secRTT out of range:     0 queriesPercentage completed: 100.00%Percentage lost:        0.00%Started at:           Tue Nov 20 15:32:11 2007Finished at:          Tue Nov 20 15:33:26 2007Ran for:              75.741798 secondsQueries per second:   7921.649813 qps

The last test is BIND 9.3.3:

> ./queryperf -d input2 -s 207.171.11.32DNS Query Performance Testing ToolVersion: $Id: queryperf.c,v 1.8.192.3 2005/10/29 00:21:12 jinmei Exp $[Status] Processing input data[Status] Sending queries (beginning with 207.171.11.32)[Timeout] Query timed out: msg id 60619[Status] Testing completeStatistics:Parse input file:     onceEnded due to:         reaching end of fileQueries sent:         600000 queriesQueries completed:    599999 queriesQueries lost:         1 queriesQueries delayed(?):   0 queriesRTT max:              3.932287 secRTT min:              0.000397 secRTT average:          0.001155 secRTT std deviation:    0.007110 secRTT out of range:     0 queriesPercentage completed: 100.00%Percentage lost:        0.00%Started at:           Tue Nov 20 15:36:26 2007Finished at:          Tue Nov 20 15:37:02 2007Ran for:              35.493465 secondsQueries per second:   16904.492137 qps

Needless to say I was impressed (and encouraged) to see that Tinydns wasn't much slower than PowerDNS in our configuration. However I was blown away that BIND ran twice as fast! I have some serious investigation to do and some further testing. I wonder what tinydns would look like against an SSD or RAMDISK.

Make The Call

Get Started

Use this if you’re making an IT decision and want to avoid a costly mistake. Answer four quick questions and we’ll route you to the right next step—strategy, sourcing, contract review, or optimization.

If it’s a fit, you’ll be able to book time immediately.

Start with 4 Quick Questions

Thanks for submitting the form.
By continuing, you agree to be contacted about your request. No spam.