我们运行对延迟敏感的系统。我们发现了延迟的一个重要原因:一些进程正在阻止对远程名称服务器的 DNS 查找。为了缓解这种情况,我们安装了一个本地缓存 DNS 解析器,特别是 dnsmasq
.
但是我们仍然偶尔会看到明显的暂停,其中对本地 DNS 缓存 ( dnsmasq
) 的查询可能需要很长时间。这些是由 TTL 到期引起的;在这些情况下 dnsmasq
在响应本地进程之前查询其上游服务器。
我们也想消除这些停顿。我希望我们的本地 DNS 缓存始终立即响应,即使响应是陈旧的。缓存应异步查询其上游服务器。例如,如果缓存提供一个陈旧的响应,它可以异步刷新它。或者更复杂的策略是在 TTL 到期前不久异步刷新缓存。
但我找不到 dnsmasq
的任何此类设置,或者对于我看过的任何其他缓存 DNS 服务器。是否有任何 DNS 服务器设计为在此配置中运行?
最佳答案
Knot resolver带配置modules = { 'predict' }
will start当 TTL 接近到期时,异步刷新被放入 answer 的记录。
请注意,版本 2.0.0 有一个错误,该错误使没有 DNSSEC 签名的记录无法刷新(将在下一个版本中修复)。
关于caching - 任何缓存 DNS 服务器都可以异步刷新它们的缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48787832/