DNS Server Benchmarking
Author: Samuel Williams When: Friday, 04 September 2009I was testing RubyDNS and found that it was a bit unreliable after a few minutes. This was actually due to a bug in the net-mdns resolver. Basically, if you want DNS resolving to work, don't use net-mdns gem. The standard resolver, works fine though (apparently it used to be broken, which is why I used the net-mdns implementation in the first place).
Anyway, during testing I made a script for testing DNS resolution, and it is bundled as part of RubyDNS:
$ rd-resolve-test 10.0.0.80 Starting test with 14 domains... Using nameservers: 10.0.0.80 Only long running queries will be printed... Starting threads... 0.54s: www.youtube.com => 66.102.7.101 0.60s: www.facebook.com => 69.63.184.150 0.65s: www.youtube.com => 66.102.7.101 0.64s: www.twitter.com => 168.143.161.20 0.52s: www.rubygems.org => 207.114.85.50 0.83s: www.facebook.com => 69.63.184.150 0.86s: www.google.com => 66.102.7.99 0.89s: www.oriontransfer.co.nz => 120.138.18.82 0.82s: www.microsoft.com => 65.55.21.250 0.55s: www.twitter.com => 168.143.161.20 0.50s: www.lucidsystems.org => 123.255.41.127 0.59s: www.amazon.com => 72.21.207.65 0.57s: www.apple.com => 17.149.160.10 0.52s: www.oriontransfer.co.nz => 120.138.18.82 Requests: 200 Average time: 0.32242531
rd-resolve-test is a simple executable which starts a number of threads. Each thread resolves a number of names against given DNS servers. This allows you to test both performance and success of a DNS server under load.
You can specify a file that contains a list of domains to use for testing, e.g.:
# domains.txt www.google.com www.slashdot.org $ rd-resolve-test -d domains.txt 10.0.0.80 Starting test with 2 domains... # ... and so on
You can customize the number of threads and names resolved per thread. Use -h super powers for more information!
Comments
Please note, you can leave a comment that uses (limited) XHTML and Textile syntax.