Joe Maller.com

iTunes slowdowns with Google DNS

Last night we tried to rent an iTunes movie on our newish Apple TV. Instead of starting right away, the Apple TV said it would be 2+ hours before we could start watching. I’ve got a healthy 15-20Mb/s connection and a clean wire to the Apple TV, so this shouldn’t be happening.

A little bit of research turned up a surprising fix: Don’t use Google DNS.

The iTunes Store has thousands of entrances. Everyone using Google DNS is trying to get in through the same door.

Some anecdotal evidence:

This totally makes sense. iTunes’ video content is delivered by Akamai who has distributed massive datastores around the world so those large files originate from nearby servers and spend less time getting switched around the network. Akamai somehow uses our DNS routing to determine our location. If Google DNS or OpenDNS routes everyone to Akamai the same way, then those Akamai nodes and the pipes leading to them get overwhelmed.

Since most people don’t know what a DNS server is, this problem primarily affects the “tech-vanguard” and those fortunate/unfortunate enough to be inside our circles of helpfulness.

I switched to my ISP’s DNS servers and now HD rentals on Apple TV are ready to watch in 10-20 seconds.

Go figure…

(I’d forgotton, but I wrote about a similar iTunes-DNS problem in March 2009: iTunes Store DNS Connection Problems)


iTunes Store DNS Connection Problems

Recently I’d been having some bizarre network problems, the most consistent of which was that I couldn’t connect to the iTunes Store. After a short round of testing, I was quickly able to determine that the problem was DNS servers I was using.

Yes, I’m one of those people who uses those 4.2.2.x DNS servers, for probably 10 years they’ve worked perfectly.

Methodology
While DNS servers can be set in the Mac’s System Preferences, that requires a lot of clicking and it’s faster to just use the networksetup command line tool. Since we’ll also be flushing the Directory Services cache with dscacheutil, switching servers can be condensed to one line making testing faster. Here’s an example of the command I’m using:

sudo networksetup -setdnsservers "AirPort" 4.2.2.1 && \
dscacheutil -flushcache

I repeated the above for each of the six known 4.2.2.x DNS servers. After individually setting each DNS server, I switched over to iTunes and attempted to access a different section of the iTunes Store.

Results
4.2.2.1, 4.2.2.2, 4.2.2.3, 4.2.2.4, 4.2.2.5 and 4.2.2.6 all failed to connect to iTunes. Each of the servers appeared to be online and responded to pings with an average response time of about 12 ms.

When I switched to any of the top three recommended DNS servers on DNSServerList.org, I was able to connect to the iTunes Store instantly.

There have been a few tweets with similar problems, but I couldn’t find anything related to upgrades or other problems with the 4.2.2.x servers. I haven’t yet been able to test this on other connections but will post an addendum once I have.