Oracle 的文档说明了以下有关缓存 ttl 的内容 -
networkaddress.cache.ttl
Specified in java.security to indicate the caching policy for successful name lookups from the name service.. The value is specified as integer to indicate the number of seconds to cache the successful lookup.
此设置如何影响 DNS 解析方式?我在地理负载均衡器后面有两个节点,我连接到它们以获取服务。现在,如果它们切换到指向其他两个节点,并且上述设置设置为 -1,它是否仍会尝试访问较早解析的 DNS 并尝试访问可能不再存在的节点?如果我在这种情况下不使用安全管理器,此设置有任何值(value)吗?
提前致谢。
最佳答案
如果安装了安全管理器,JVM 的默认行为是永久缓存(设置 -1)。因此,您必须显式设置 ttl 超时,以便重新尝试 DNS 解析。您可以通过应用程序启动(应用程序级别)或系统级别的安全管理器设置此属性。
java.security.Security.setProperty("networkaddress.cache.ttl" , "10");
对于系统范围的编辑以下文件,将 ttl 包含为零。
<JAVA_HOME>/jre/lib/security/java.security
networkaddress.cache.ttl=0
没有安全管理器: 通常默认值取决于操作系统和 jvm 类型。 AWS 使用 60 秒,请参阅 this
PS:系统级别设置始终覆盖应用级别设置。
关于java - JVM是否因为networkaddress.cache.ttl设置而缓存url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454654/