DNS Performance Test

This app will test the performance of your dns server and show the results in a handy chart.

It will resolve the ip addresses in random order of the included list of 10,000 domain names inside the domains.txt file. 

You can edit this file if you wish to test different domains.

This program is available for Windows, Macintosh and Linux.

Here's a screen shot:

It also keeps some statistics:

AttachmentSize
Dpt-MacOS.zip21.2 KB

The reason the app "Beach

The reason the app "Beach balls" while it is waiting for the reply from the DNS is that it is now single threaded.  The multi-threaded version was very unstable and prone to frequent crashes.

OS X version sometimes beachballs...

Hi Great App! One issue I'm having though is that sometimes the app beachballs (pauses in the OS) and when it unpauses the graph acts as if no delay had been incurred. IF you're getting delayed on a DNS system call then it seems to me the DNS should get dinged. Or perhaps there should be a way of showing that the OS was slow in the graph/stats. Not sure what the right feature would be, just noting a very user-visible phenomenon. Thanks!

RE: Beachballs

Well, that's pretty much the expected behaviour with DNS resolution failures.  Except that they should be showing up on the graph and in the "Stats" page, I'll have to look into why they aren't.

The reason the app "Beach balls" while it is waiting for the reply from the DNS is that it is now single threaded.  The multi-threaded version was very unstable and prone to frequent crashes.

~ Silverwolf

Thanks for information...

Thanks for information...

Incorrect Filesize display

I am aware that the file size display on this page is incorrect, I'm having an issue with my webhost at the moment, but rest-assured the file you will be downloading is actually closer to 2.5 MB.

Silverwolf

~ Silverwolf

Changelog

0.8.5

Modified the MacOS version to be faster and more accurate on Lepoard.

0.8.4

Change log:

  • Added Timeout test & count (> 1200 ms) so that DNS Queries that timeout will not skew the results.
  • Fixed Misspelling in stats page.
  • Ditched the unreliable Preemptive Threading Module I was using for a more traditional cooperative threading model.  (The window may not be as responsive while tests are running but stability should be greatly increased, so less crashes !)
  • Changed Graph to draw all lines in black as some of the colors were hard to read.
  • Graph will now scroll the most recent 20 results.
  • Fixed bug that caused the domains.txt file to be truncated if the app was closed during the startup randomization process.
  • More democratic Subjective DNS Server Performance Metric, it is now using the following scale:

  Select case StatQueryAveradgeTime
  case 0 to 150
    Quality = "Great"
  case 150 to 500
    Quality = "Ok"
  case 500 to 800
    Quality = "Pretty Bad"
  case else
    Quality = "Terrible"
  end Select

~ Silverwolf

Odd Query Times

I ran your program on Leopard, and the response times averaged around 6 seconds!  I was very surprised by this, and the results were not duplicated by a Windows machine on the local network.  So, I did my own test.  I changed your host file's line endings to Unix and ran the following command:

 

sed 's/http\:\/\///g' domains.txt | xargs -n 1 dig | awk '/Query time/ { print $4 }'

The response times here are an order of magnitude (or two) better than what your program is saying.  I don't know why the response times are so slow with your program, but they aren't indicative of a slow DNS server here.

 

Note that we have a DNS server set up on our local network.

RE: Odd Query Times

I've made some changes in the newest version that should resolve your issues.  Please let me know what you think.

Silverwolf

~ Silverwolf

Stats.

Silverwolf, I would like an option to have DPT ignore DNS timeouts from its statistical calculations. Since I use dnscache from tinydns/Dan Bernstein, it sometime has issues with not quite standards compliant DNS servers. I have found that it can generally get the domain on a second request just fine. But for me, all I really care about are the stats that don't timeout. Thanks for writing this tool. Andrew

Timeouts

This has been added in the latest version. The program will still chart times over 1100ms but it will not count them as part of the statistics. Additionally a counter on the stats page will show how many timeouts have been triggered.
~ Silverwolf

Would you add a prefs dialog and pref to ignore timeouts?

Hi Thanks for the great app! One obvious issue to me is that I see occasional times like 2.5s in the graph but when I go to the stats the largest number I see is 950ms. To me, leaving out the 2.5s response is skewing the results. These slow (or dropped) lookups will negatively effect my "network experience" so I don't think they're spurious and would like them in the stats. Since others feel the opposite, I'd like to request a preference! Or, if that's too much work, to substantially up the timeout metric so it doesn't disagree with what you see on the graph - say 4 seconds? Or at least 2?

Ignore Timeouts

Adding a preference to ignore timeouts seems like a reasonable step, so I will add it to the next released version.

Thanks for commenting !

~ Silverwolf

Needs some polish, but good app

I can see the benefit of this application, however there are a few things that can use some improvement. For example, a little documentation would be nice, typo in the "Average Query Time", and a "Overall DNS Server Performance" key and why and what does it mean would be nice. Also if I let this application run to complete all 10,000 querys it crashes. A nice side component would be an auto generate random list of 1000 domains from your website to d/l, so you can test with new data and any time. Performance can be based on your internet connection speed and the DNS resolving speed, physical location from you to the server... etc. Some queries will take longer, and that is to be expected.

Thanks

Firstly, thanks for taking the time to comment, it's always appreciated.

I'll correct the typo's in the next released version.  I think the crash is related to the preemptive threading module I am using, I noticed that if you start and stop the process several times it will crash as well. 

Also, it doesn't seem to function under Linux, but I wanted to use a multi threaded app, otherwise the UI would be frozen a good portion of the time while the queries are running.

The "Overall DNS Server Performance" metric is a completely subjective ranking of your average DNS server performance based upon the following table:

  Select case StatQueryAveradgeTime
  case 0 to 50
    Quality = "Great"
  case 50 to 200
    Quality = "Ok"
  case 200 to 400
    Quality = "Pretty Bad"
  case else
    Quality = "Terrible"
  end Select

As you can see from the screen shot above mine was rated Terrible.

Anyhow, thanks for trying the app.

Silverwolf

~ Silverwolf