JVM and OS DNS Caching

前端 未结 3 641
你的背包
你的背包 2021-02-07 20:16

I am facing a problem with JVM and DNS.

Everything I\'m reading (including the docs and this) says that I can disable JVM DNS caching using networkaddress.cache.tt

相关标签:
3条回答
  • 2021-02-07 21:00

    I think I've run into this problem, or a very similar one. What I did then was to implement my own DNS provider for the JVM, see how to change the java dns service provider for details. You can use the dnsjava mentioned there or roll your own.

    0 讨论(0)
  • 2021-02-07 21:03

    From here it seems you should set sun.net.inetaddr.ttl. This worked for me.

    Example from link:

    java -Dsun.net.inetaddr.ttl=1 test
    Enter the hostname
    rrr
    Output isrrr/129.145.146.100
    Enter the hostname
    rrr
    Output isrrr/129.147.146.100
    
    0 讨论(0)
  • 2021-02-07 21:15

    You can either edit your $JAVA_HOME/jre/lib/security/java.security for Java 6-8 and $JAVA_HOME/conf/security/java.security property file to add the following property .

    networkaddress.cache.ttl=1
    

    It is not available to set it in command line.

    Since these 2 properties are part of the security policy, they are not set by either the -D option or the System.setProperty() API, instead they are set as security properties.

    To set this property inside the code, you can use the following method.

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

    Or add the following property in the java command line.

    -Dnetworkaddress.cache.ttl=1
    

    It is also important to note that values are effective only if the corresponding networkaddress.cache.* properties are not set.

    See Java 8 Networking Properties, Java 9 Networking Properties and VeriSign DNS Caching in Java Virtual Machines for more details.

    This answer also adds some details.

    0 讨论(0)
提交回复
热议问题