几个月前我在堆栈溢出问了这个问题 ,并没有得到任何有用的答案。 也许这里有人有更好的信息。
请注意,我正在谈论客户端DNSparsing器caching。 此消息不涉及Windows DNS服务器。
我有一个C#程序,它执行大量的DNSparsing。 因为HTTPWebRequest组件不会让我更改主机头,我不能创build我自己的内部DNScaching。 所以我必须依靠Windows DNScaching,这看起来不会改变。
有一个相当不错的TechNet文章有关Windows Server 2003中的DNScachingregistry设置,但我还没有能够certificate,设置它们在XP,Server 2003,Vista或Server 2008中做任何事情。所有其他页面,我通过谷歌search引用该页面或解释它,有时不正确。
Windows的ipconfig命令有一个/displaydns开关,它将输出caching的内容。 据我所知,这是确定DNScaching大小的唯一方法。 在使用2 GB内存的32位Windows XP机器上进行的实验中,无论我设置DNScachingregistry值如何,我总是会在caching中使用30到40个项目 – 甚至在执行数千个DNSparsing。 在具有16 GB内存的64位Windows 2008计算机上,caching中总是有270到300个项目。
我很难过 我不知道答案是什么,但我认为以下情况之一是:
ipconfig并没有显示caching中的所有条目。 任何人都可以告诉我是否可以在Windows XP,Vista或Server 2008中configurationDNSparsing器caching的大小?
另一种validation方法是查看networking上stream动的DNSstream量。 即如果您的应用程序在下午2点对domainX进行查询,并且在跟踪中的下午2点,您看不到相应的DNS数据包,则该名称将使用客户端caching解决。
我知道,确认caching大小是一种令人费解的方式。 我同意应该有更好的方法来确认这一点。
尝试在微软官方论坛中发送问题,或者尝试发送电子邮件给networking团队
给这个旋转:
HKLM \系统\ CurrentControlSet \服务\的dnscache \参数\ MaxCacheSize
我找不到任何文档,但Dnscache服务在启动时检查是否存在该registry值,因此值得testing。
值可能是千字节。 就像我说的那样,因为它没有logging,所以你必须testing。
我没有尝试更改DNS客户端上的设置,所以我不能说这个,但是我build议在重新启动服务时运行processmon(www.sysinternals.com)。 您应该看到任何尝试读取registry项。 它会告诉你它试图访问哪个registry项和项目。 这应该与文档匹配,但如果不是,它会希望告诉你什么是错的。