設定DNS名稱查詢JVMTTL的 - AWS SDK for Java 1.x

截至 2024 年 7 月 31 日, AWS SDK for Java 1.x 已進入維護模式,並將end-of-support在 2025 年 12 月 31 日送達。我們建議您遷移至 AWS SDK for Java 2.x,以繼續接收新功能、可用性改進和安全性更新。

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

設定DNS名稱查詢JVMTTL的

Java 虛擬機器 (JVM) 會快取DNS名稱查詢。當 將主機名稱JVM解析為 IP 地址時,它會快取 IP 地址一段時間,稱為 time-to-live(TTL)。

由於 AWS 資源使用偶爾變更DNS的名稱項目,建議您JVM將 設定為 5 秒TTL的值。這可確保當資源的 IP 地址變更時,您的應用程式可以透過重新查詢 來接收和使用資源的新 IP 地址DNS。

在某些 Java 組態上,TTL會設定JVM預設值,因此在JVM重新啟動 之前,永遠不會重新整理DNS項目。因此,如果 AWS 資源的 IP 地址在應用程式仍在執行時變更,在您手動重新啟動 JVM並重新整理快取的 IP 資訊之前,將無法使用該資源。在此情況下,請務必設定 JVM,TTL以便定期重新整理其快取的 IP 資訊。

如何設定 JVM TTL

若要修改 JVM的 TTL,請設定 networkaddress.cache.ttl 安全屬性值,將$JAVA_HOME/jre/lib/security/java.security檔案中的 networkaddress.cache.ttl 屬性設定為 Java 8,或將$JAVA_HOME/conf/security/java.security檔案設定為 Java 11 或更高版本。

以下是檔案的程式碼片段java.security,顯示TTL快取設定為 5 秒。

# # 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 ...

在環境變數JVM表示的$JAVA_HOME 上執行的所有應用程式都使用此設定。