这是针对公司内部服务器名称的上游 DNS 不稳定的服务器设置。有时,当某个条目由于 TTL 从缓存中丢失时,我们的系统尝试解析它,但上游没有响应;然后我们的系统就崩溃了。请求的域相当固定。
是否有适用于 Linux 的 DNS 缓存,它仍然遵守 TTL(在 X 时间内无需再次询问),但它会在 TTL 到期时尝试刷新(使用 exp. back-off)缓存?同时可能返回旧答案,就像宽限期一样。
目前我们倾向于将缓存移至应用程序和数据库中。这对我来说似乎有点不确定。
一些商用路由器设备似乎将此称为“FQDN 刷新”。但我在查看的几个开源软件包中找不到执行此操作的配置。它可能在那里,但表述略有不同。
答案1
大多数缓存服务器都有能力获取即将过期的资源,这个功能称为预取
预取:是或否
如果是,则在消息缓存元素过期之前会对其进行预取,以保持缓存最新。默认为否。启用此功能会使流量和机器负载增加约 10%,但热门项目不会从缓存中过期。
RFC 8767 还允许缓存在无法刷新缓存时返回过期数据。可以使用以下方式在 unbound 中启用此功能:
服务过期客户端超时:毫秒
向客户端回复过期数据之前的时间(以毫秒为单位)。这实质上启用了 RFC 8767 中指定的服务过期行为,即首先尝试解析,然后立即回复过期数据。RFC 8767 的建议值为 1800。将其设置为 0 将禁用此行为。默认值为 0。