设置 DNS 名称查找的 JVM TTL - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 DNS 名称查找的 JVM TTL

故障转移机制自动更改数据库实例的域名系统 (DNS) 记录,使其指向备用数据库实例。因此,您需要重新建立与数据库实例之间的所有现有连接。在 Java 虚拟机 (JVM) 环境中,由于 Java DNS 缓存机制的工作原理,您可能需要重新配置 JVM 设置。

JVM 缓存 DNS 名称查找。当 JVM 将主机名解析为 IP 地址时,它会将该 IP 地址缓存一段指定的时间,即 time-to-live(TTL)。

由于 Amazon 资源使用的 DNS 名称条目偶尔会发生变化,因此我们建议您将 JVM 的 TTL 值配置为不超过 60 秒。这样做可确保在资源的 IP 地址发生更改时,您的应用程序可以通过重新查询 DNS 来接收和使用资源的新 IP 地址。

对于一些 Java 配置,将设置 JVM 默认 TTL,以便在重新启动 JVM 之前绝不刷新 DNS 条目。因此,如果在应用程序仍在运行时 Amazon 资源的 IP 地址发生了变化,则在您手动重新启动 JVM 并刷新缓存的 IP 信息之前,它无法使用该资源。在此情况下,设置 JVM 的 TTL,以便定期刷新其缓存的 IP 信息是极为重要的。

您可以通过检索 networkaddress.cache.ttl 属性值来获取 JVM 的原定设置 TTL:

String ttl = java.security.Security.getProperty("networkaddress.cache.ttl");
注意

默认 TTL 是变化的,具体取决于 JVM 的版本以及是否安装安全管理器。许多 JVMs 提供的默认 TTL 小于 60 秒。如果您使用此类 JVM 并且未使用安全管理器,则您可以忽略本主题的剩余内容。

要修改 JVM 的 TTL,请设置 networkaddress.cache.ttl 属性值。根据您的需求,使用下列方法之一:

  • 要为使用 JVM 的所有应用程序全局设置属性值,请在 networkaddress.cache.ttl 文件中设置 $JAVA_HOME/jre/lib/security/java.security

    networkaddress.cache.ttl=60
  • 要仅在本地为应用程序设置属性,请在建立任何网络连接之前,在应用程序的初始化代码中设置 networkaddress.cache.ttl

    java.security.Security.setProperty("networkaddress.cache.ttl" , "60");