2017-04-17 94 views
0

甲骨文的文檔說以下有關緩存TTL -由於networkaddress.cache.ttl設置,JVM是否緩存url?

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並嘗試轉到可能不再存在的節點?如果我不使用安全管理器,那麼這個設置是否有任何價值?

在此先感謝。

回答

0

如果安裝了安全管理器,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:系統級別設置始終會覆蓋應用程序級別設置。

+0

查看您提供的鏈接,似乎不建議更改緩存設置。 – JUG

+0

是的,因爲他們使用dns名稱爲每個服務aws ec2's。 – Ravi