首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置Windows解析器缓存

配置Windows解析器缓存
EN

Stack Overflow用户
提问于 2009-03-10 15:29:58
回答 4查看 9.1K关注 0票数 7

请注意,我正在讨论的是客户端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项。

我很困惑。我不知道答案是什么,但我认为情况如下:

  1. 不可能更改DNS解析器缓存的大小。
  2. 这是可能的,但文件是错误的。
  3. 就目前而言,文档是正确的,但它是不完整的。
  4. 文档是正确和完整的,但我太笨了,弄不懂它。
  5. 文档中的注册表项实际上改变了缓存的大小,但是ipconfig并没有向我展示缓存中的所有条目。

有人能告诉我是否可以在Windows、Vista或Server 2008中配置DNS解析器缓存的大小吗?

EN

回答 4

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2012-08-23 05:41:53

有一个程序“便携式DNS缓存”,您可以使用它来查看DNS缓存,监视DNS解析器的活动,并查看通过缓存解析的查询和转发到DNS服务器的查询。在其设置中,可以配置缓存中的最大项数。尽管如此,它似乎强制所有项目停留在缓存中,直到您单击“清除缓存”按钮或缓存限制。

票数 1
EN

Stack Overflow用户

发布于 2009-03-10 15:48:55

默认情况下,缓存的最小TTL是1天,我已经玩过了,但默认情况下,我相信默认情况下注册表项不在那里。

这是您正在寻找的关键,至少在XP中是这样的:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters

您需要添加一个DWORD MaxCacheTtl -这将更改存储在解析器缓存中的最小TTL。

由于它的默认值为86,400 (值以秒为单位,默认值为1天),因此任何短于此值的内容都不会被缓存。如果你把它降低到300,你会看到更多的缓存在客户端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/630790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档