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并尝试转到可能不再存在的节点?如果我在这种情况下不使用安全管理器,这个设置是否有任何价值?
提前致谢。
答案 0 :(得分:2)
如果安装了安全管理器,JVM的默认行为是永久缓存(设置-1)。因此,您必须显式设置ttl超时,以便重新尝试DNS解析。您可以在应用程序启动(应用程序级别)或系统级别通过安全管理器设置此属性。
java.security.Security.setProperty("networkaddress.cache.ttl" , "10");
对于系统范围内的编辑文件,将ttl包含在零。
<JAVA_HOME>/jre/lib/security/java.security
networkaddress.cache.ttl=0
没有安全经理: 通常默认值取决于os&amp; jvm类型。 AWS使用60秒,请参阅this
PS:系统级设置始终会覆盖应用级设置。