我们宣布
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 DNS 名称查找的 JVM TTL
Java 虚拟机 (JVM) 缓存 DNS 名称查找。当 JVM 将主机名解析为 IP 地址时,它会将该 IP 地址缓存一段指定的时间,即 time-to-live(TTL)。
由于 AWS 资源使用的 DNS 名称条目偶尔会发生变化,因此我们建议您将 JVM 的 TTL 值配置为不超过 60 秒。这可确保在资源的 IP 地址发生更改时,您的应用程序将能够通过重新查询 DNS 来接收和使用资源的新 IP 地址。
对于一些 Java 配置,将设置 JVM 默认 TTL,以便在重新启动 JVM 之前绝不 刷新 DNS 条目。因此,如果在应用程序仍在运行时 AWS 资源的 IP 地址发生变化,则在您手动重启 JVM 并刷新缓存的 IP 信息之前,它将无法使用该资源。在此情况下,设置 JVM 的 TTL,以便定期刷新其缓存的 IP 信息是极为重要的。
注意
默认 TTL 是变化的,具体取决于 JVM 的版本以及是否安装安全管理器
如何设置 JVM TTL
要修改 JVM 的 TTL,请设置 networkaddress.cache.ttl
-
全局 (针对所有使用 JVM 的应用程序)。在 Java 8 的
$JAVA_HOME/jre/lib/security/java.security
文件(或在 Java 11 或更高版本的$JAVA_HOME/conf/security/java.security
文件)中设置networkaddress.cache.ttl
:networkaddress.cache.ttl=60
-
仅针对应用程序,在应用程序的初始化代码中设置
networkaddress.cache.ttl
:java.security.Security.setProperty("networkaddress.cache.ttl" , "60");