設定 DNS 名稱查詢的 JVM TTL - AWS SDK for Java 1.

我們宣布了即將推 end-of-support 出的 AWS SDK for Java (v1)。我們建議您移轉至 AWS SDK for Java v2。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 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 上執行的所有應用程式都會使用此設定。