DNS 名参照用の JVM TTL を設定する - AWS SDK for Java 1.x

( AWS SDK for Java v1) end-of-support の今後の を発表しましたAWS SDK for Java v2 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DNS 名参照用の JVM TTL を設定する

Java 仮想マシン (JVM) は DNS 名参照をキャッシュします。JVM がホスト名を IP アドレスに解決すると、time-to-live(TTL) と呼ばれる指定された期間、IP アドレスがキャッシュされます。

AWS リソースは DNS 名エントリを使用するため、JVM の TTL 値を 5 秒に設定することをお勧めします。これにより、リソースの IP アドレスが変更されたときに、アプリケーションは DNS に対して再度クエリを実行することで、リソースの新しい IP アドレスを取得し、使用できるようになります。

一部の Java 設定では JVM のデフォルトの TTL が設定されるため、JVM が再起動されるまで、DNS エントリが更新されることはありません。したがって、アプリケーションの実行中に AWS リソースの IP アドレスが変更された場合、JVM を手動で再起動し、キャッシュされた IP 情報が更新されるまで、そのリソースを使用することはできません。この場合、キャッシュされた IP 情報が定期的に更新されるように JVM の TTL を設定することが極めて重要です。

JVM TTL を設定する方法

JVM の TTL を変更するには、networkaddress.cache.ttl セキュリティプロパティ値を設定し、Java 8 の場合は $JAVA_HOME/jre/lib/security/java.security ファイルに、Java 11 以降の場合は $JAVA_HOME/conf/security/java.securityファイルに networkaddress.cache.ttlプロパティを設定します。

以下は、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 ...

環境変数で表される JVM で実行されるすべてのアプリケーションは、$JAVA_HOMEこの設定を使用します。