请注意,我正在讨论的是客户端DNS解析器缓存。此消息与Windows DNS服务器无关。
我有一个C#程序,它可以执行很多DNS解析。因为HTTPWebRequest组件不允许我更改主机头,所以我无法创建自己的内部DNS缓存。因此,我必须依赖Windows DNS缓存,它看起来不适合更改。
关于Windows 2003中的DNS缓存注册表设置,有一个相当不错的TechNet文章,但我一直无法证明设置它们可以起到任何作用。我通过Google搜索找到的所有其他页面要么引用了该页面,要么解释了它,有时是错误的。
Windows的ipconfig命令有一个/displaydns开关,它将输出缓存的内容。据我所知,这是确定DNS缓存大小的唯一方法。在32位Windows XP盒上的实验中,无论我将DNS缓存注册表值设置为什么,我都会在缓存中得到30到40项--即使在执行了数千个DNS解析之后。在我拥有16 GB内存的64位Windows 2008机器上,我总是在缓存中得到270到300项。
我很困惑。我不知道答案是什么,但我认为情况如下:
有人能告诉我是否可以在Windows、Vista或Server 2008中配置DNS解析器缓存的大小吗?
发布于 2011-06-13 23:57:26
通过这些设置,在网络上停留几分钟之后,我看到了1517个缓存条目:
REGEDIT4
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
"QueryIpMatching"=dword:00000001
"NegativeCacheTime"=dword:00000000
"NegativeSOACacheTime"=dword:00000000
"CacheHashTableBucketSize"=dword:00000001
"CacheHashTableSize"=dword:00000180
"MaxCacheEntryTtlLimit"=dword:00000e10
"MaxSOACacheEntryTtlLimit"=dword:0000012c
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
"QueryIpMatching"=dword:00000001
发布于 2012-08-23 05:41:53
有一个程序“便携式DNS缓存”,您可以使用它来查看DNS缓存,监视DNS解析器的活动,并查看通过缓存解析的查询和转发到DNS服务器的查询。在其设置中,可以配置缓存中的最大项数。尽管如此,它似乎强制所有项目停留在缓存中,直到您单击“清除缓存”按钮或缓存限制。
发布于 2009-03-10 15:48:55
默认情况下,缓存的最小TTL是1天,我已经玩过了,但默认情况下,我相信默认情况下注册表项不在那里。
这是您正在寻找的关键,至少在XP中是这样的:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters
您需要添加一个DWORD MaxCacheTtl -这将更改存储在解析器缓存中的最小TTL。
由于它的默认值为86,400 (值以秒为单位,默认值为1天),因此任何短于此值的内容都不会被缓存。如果你把它降低到300,你会看到更多的缓存在客户端。
https://stackoverflow.com/questions/630790
复制相似问题