java - JVM是否因为networkaddress.cache.ttl设置而缓存url?

标签 java dns jvm

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/

相关文章:

java - 并不是所有的表单验证错误都显示在 JSP 中

java - 如何以编程方式移动 GWT Horizo​​ntalSplitPanel 的拆分器?

java - 将大型 hprof 加载到 jhat

java - 为什么 Java 中的 LineNumberReader 总是返回零?

java - Opencv - 构建 Opencv 失败 (MacOSX)

ruby-on-rails - Rails - 使用 Rack 的动态 cookie 域

email - 如何使用 Route53 设置域名提供商的邮件转发?

dns - 我可以在不同的托管区域中有一个 route53 子域吗?

eclipse - 了解 JVM 堆大小(使用 Eclipse 时)

java - 将 Java 函数传递给 KFunction