本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 DNS 名稱查詢的 JVM TTL
Java 虛擬機器 (JVM) 會快取 DNS 名稱查詢。當 JVM 將主機名稱解析為 IP 位址時,會將 IP 位址快取一段指定的時間段,稱為 time-to-live(TTL)。
由於 AWS 資源使用偶爾會變更的 DNS 名稱項目,因此建議您將 JVM 設定為 5 秒的 TTL 值。這可確保當資源的 IP 位址變更時,您的應用程式將可透過重新查詢 DNS 來接收並使用資源的新 IP 位址。
在一些 Java 組態上,JVM 的預設 TTL 會如此設定,在重新啟動 JVM 之前,「絕不」重新整理 DNS 項目。因此,如果 AWS 資源的 IP 位址在應用程式仍在執行時發生變更,則除非您手動重新啟動 JVM 並重新整理快取的 IP 資訊,否則該資源將無法使用該資源。在此情況下,設定 JVM 的 TTL 至為關鍵,以便其定期重新整理快取的 IP 資訊。
如何設定 JVM 的 TTL
若要修改 JVM 的 TTL,請設定網路位址 .cache.ttl 安全性屬性值,並將檔案中的屬性設定networkaddress.cache.ttl
為 Java 8 或更高版本的$JAVA_HOME/jre/lib/security/java.security
檔案。$JAVA_HOME/conf/security/java.security
以下是顯示 TTL 快取設定為 5 秒的java.security
檔案片段。
# # This is the "master security properties file". # # An alternate java.security properties file may be specified ... # The Java-level namelookup cache policy for successful lookups: # # any negative value: caching forever # any positive value: the number of seconds to cache an address for # zero: do not cache ...
networkaddress.cache.ttl=5
...
在以$JAVA_HOME
環境變數表示的 JVM 上執行的所有應用程式都會使用此設定。