I 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!