Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I asked this question on Stack Overflow several months ago and didn't get any useful answers. Perhaps somebody here has better info.

Note that I'm talking about the client DNS resolver cache. This message is not concerned with the Windows DNS Server.

I have a C# program that does a lot of DNS resolutions. Because the HTTPWebRequest component won't let me change the Host header, I can't create my own internal DNS cache. So I have to depend on the Windows DNS cache, which doesn't appear amenable to change.

There's a reasonably good TechNet article about the DNS cache Registry settings in Windows Server 2003, but I haven't been able to prove that setting them does anything in XP, Server 2003, Vista, or Server 2008. All the other pages I found through a Google search either reference that page or paraphrase it, sometimes incorrectly.

Windows' ipconfig command has a /displaydns switch that will output the contents of the cache. To my knowledge, that's the only way to determine the size of the DNS cache. In my experiments on a 32 bit Windows XP box with 2 GB of memory, no matter what I set the DNS cache registry values to, I always end up with between 30 and 40 items in the cache--even after doing thousands of DNS resolutions. On my 64-bit Windows 2008 machine with 16 GB of memory, I always get between 270 and 300 items in the cache.

I'm stumped. I don't know what the answer is, but I figure one of the following is the case:

  1. It's not possible to change the size of the DNS resolver cache.
  2. It is possible, but the documentation is wrong.
  3. The documentation is correct as far as it goes, but it’s incomplete.
  4. The documentation is correct and complete, but I’m too dumb to make sense of it.
  5. The documented registry entries actually changed the size of the cache, but ipconfig isn’t showing me all the entries that are in the cache.

Can anybody tell me if it's possible to configure the size of the DNS resolver cache in Windows XP, Vista, or Server 2008?

share|improve this question
add comment

3 Answers

another way to verify would be to look at DNS traffic flowing on the wire. i.e. if your application makes a query for domainX at 2 PM and you don't see corresponding DNS packet at 2 PM in trace than that name got resolved using client side cache.

I know, it is kind of convoluted way to confirm the cache size. I concur there should be better way to confirm this.

Try shooting a question in Microsoft official forums or try sending a email to networking team

here. http://blogs.msdn.com/wndp/

share|improve this answer
add comment

Give this a whirl:

HKLM\System\CurrentControlSet\services\Dnscache\Parameters\MaxCacheSize

I can't find any documentation for it, but the Dnscache service does check for the existence of that registry value when it starts up, so it's worth testing.

The value is probably in kilobytes. Like I said, since it's undocumented, you'll have to test.

share|improve this answer
add comment

I haven't tried changing settings on the DNS Client so I can't speak into that, but what I suggest is to run processmon (www.sysinternals.com) while you're restarting the service. You should see any attempts that are made to read registry keys. It will tell you exactly which registry key and items it's trying to access. That should match up with the documentation, but if it doesn't it will hopefully tell you what's wrong.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.