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.

The Next Move Is Yours

Stop Guessing. Start Leading.

Make your next IT decision the right one.