Samuel Williams Friday, 04 September 2009

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!

Comments

Leave a comment

Please note, comments must be formatted using Markdown. Links can be enclosed in angle brackets, e.g. <www.codeotaku.com>.