AWS SDK for Java
開発者ガイド

DNS 名参照用の JVM TTL の設定

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

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

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

注記

JVM のバージョンと、セキュリティマネージャーがインストールされているかどうかに応じて、デフォルト TTL は変わります。多くの JVM はデフォルト TTL を 60 秒以下にしています。このような JVM を使用しており、セキュリティマネージャーを使用していない場合、このトピックの残りの部分は無視してかまいません。

JVM TTL の設定方法

JVM の TTL を変更するには、networkaddress.cache.ttl プロパティの値を設定します。ニーズに応じて、次の方法のいずれかを使用します。

  • グローバルに、JVM を使用するすべてのアプリケーションが対象$JAVA_HOME/jre/lib/security/java.security ファイルで networkaddress.cache.ttl を設定します。

    networkaddress.cache.ttl=60
  • アプリケーションのみが対象の場合は、アプリケーションの初期化コードで networkaddress.cache.ttl を設定します。

    java.security.Security.setProperty("networkaddress.cache.ttl" , "60");

このページの内容: