Feel free to make use of the data in the table below the wall-of-text if you can, but note that these benchmarks lack multiple data-points, and are mainly for my own use. Doing your own testing would certainly be wise!
I decided to take a look at DNS benchmarks again in a CloudFlare vs Route53 vs DNSMadeEasy vs NameCheap sort of way. Most existing benchmarks that I could find were old, aside from 1 site that put out monthly statistics but was a little useless because their test locations were located in the same region as DME’s PoP’s and obviously listed their average as being in the sub-10ms range. There was another site with more information, but the “good stuff” was paywalled at a really high price tag.
- WebPageTest.org was used, and the DNS lookup value was recorded. Comes with the standard “you’re testing from a datacenter, not from an average visitor location” clause.
- For CloudFlare, I picked a random small site I came across on Google that was using CF’s DNS.
- For DNSMadeEasy, rather than searching for another small site, I took the path of least resistance by picking a somewhat popular corporate site that I knew to have used DME (and fortunately, they still do).
- For Amazon Route 53 “A”, I picked one of my own sites that were using it and had LBR/FO enabled.
- For Amazon Route 53 “B”, I also picked another of my sites that were “Simple” instead of LBR/FO.
- For NameCheap, I picked one of the small web-presence sites I host.
Some Possible Issues:
- None of the DNS providers are clear about how they distribute the records to the edges. Hypothetically, if they all purged edges on an LRU basis, DME and AmazonA would show better in this test, and the others would show worse because the others aren’t busy sites and there would have been extra delay due to priming the edges. Ideally I would have tested a known busy, average, and no-traffic site for each DNS provider.
- While I generally queued up the tests at each location to minimize time-of-day latency issues, obviously there could have still been hiccups or edge-cases. Repetitiion would have been ideal.
- The reason that I tested 2 Amazon variants is that I wasn’t sure if using LBR has a negative impact on the DNS resolution time. It shouldn’t if they just send the “appropriate” records to each edge, but that’s just a guess at how it might be implemented – obviously could if it’s set up differently.
(times in ms, fastest/slowest colored)
|CloudFlare||DNSMadeEasy||Route53 “A”||Route53 “B”||NameCheap|
- DME does particularly well, and NameCheap does particularly poorly. This might be expected, as DME is the most expensive of the bunch, and NameCheap’s DNS comes free with a domain. However, the site that used DME was also the most popular, and the one using NameCheap has almost no traffic, so if the LRU purging possibility mentioned earlier does exist, that could play a large factor here as well on either side.
- Latency-based routing being enabled in Amazon Route 53 doesn’t seem to have any effect (unless LRU purging actually does happen and extra time for LBR was masked by an improvement via a cache). There were 2 exact ties, and otherwise, the sites seemed to trade off, although some of the differences were surprisingly large (sometimes “A” was ~double “B” and vice-versa).
- IPv6 DNS Servers: CloudFlare and DNSMadeEasy are the only ones who have it.
- Geo/Latency routing: DNSMadeEasy has Geo-Targetting via their “Global Traffic Director” for $540/year/domain (yikes!). Route53 has it on a pay-as-you-go rate of ~$0.60-$0.70 per 1 million queries and supports both Latency-Based and Geo-Targetted routing. Techically, if CloudFlare hosts your site too and serves up your static stuff, that stuff is getting the benefit of latency-based routing.
- Monitoring & Failover: I’ve used both and found both to be pretty darned reliable. DNSMadeEasy has it for ~$5/year per A record (you get a few free with the $60+/year plans) which will send you an email and swap to a backup server. Amazon has “health checks” for $0.75/month per monitor. Amazon’s is the cheap option if you want to monitor 1 URL/page/etc (like a simple test page on the server) and have it switch over a whole bunch of records (like everything on the server) if it goes down because all it costs is that $0.75/month unlike DNSMadeEasy where if you have 50 A records between all your sites, you’re spending $5×50. However, Amazon charges an extra $2/month if you want faster checking, string matching, or HTTPS and you’ll have to set up and pay for alarms if you want to be notified, where-as DNSMadeEasy kinda “throws that stuff in” so DNSMadeEasy is cheaper if you want that stuff and only have a site or 2 (and don’t need a zillion A Records).