据我了解,Tomcat 在 Linux 上使用单独的 DNS 缓存。我怎样才能清除它?
我们的 Tomcat 服务器正在运行一个应用程序,该应用程序使用另一台服务器上的服务,该服务器的 IP 地址已更改。现在我收到noRouteToHost异常,即使在从另一台计算机测试时似乎可以使用它的 DNS 名称访问另一台服务器上的服务。此外,当使用其 DNS 名称从安装了 tomcat 的服务器对“新 IP”服务器执行 ping 操作时,ping 会执行正确的新 IP 地址。
据我了解,Tomcat 在 Linux 上使用单独的 DNS 缓存。我怎样才能清除它?
我们的 Tomcat 服务器正在运行一个应用程序,该应用程序使用另一台服务器上的服务,该服务器的 IP 地址已更改。现在我收到noRouteToHost异常,即使在从另一台计算机测试时似乎可以使用它的 DNS 名称访问另一台服务器上的服务。此外,当使用其 DNS 名称从安装了 tomcat 的服务器对“新 IP”服务器执行 ping 操作时,ping 会执行正确的新 IP 地址。
Oracle/Sun Java 为其自己的名称解析机制提供内部缓存(它不特定于 Apache Tomcat servlet 容器)。
目前看来,最简单的解决方案是重启整个 JVM 容器。
networkaddress.cache.ttl
之后,如果您想完全禁用内部 DNS 缓存,可以通过将networkaddress.cache.negative.ttl
系统属性设置为 0 来实现(有关这些 Java 属性的更多信息,请参见此处)。