Définissez le TTL de la JVM pour les recherches de noms DNS - AWS SDK for Java 1. x

Nous avons annoncé la sortie prochaine end-of-support de AWS SDK for Java (v1). Nous vous recommandons de migrer vers la AWS SDK for Java version v2. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définissez le TTL de la JVM pour les recherches de noms DNS

La machine virtuelle Java (JVM) met en cache les recherches de nom DNS. Lorsque la JVM convertit un nom d'hôte en adresse IP, elle met l'adresse IP en cache pendant une période spécifiée, connue sous le nom de time-to-live(TTL).

Étant donné que les AWS ressources utilisent des entrées de nom DNS qui changent occasionnellement, nous vous recommandons de configurer votre JVM avec une valeur TTL de 5 secondes. Ainsi, lorsque l'adresse IP d'une ressource change, votre application peut recevoir et utiliser la nouvelle adresse IP de la ressource en interrogeant le DNS.

Dans certaines configurations Java, la durée de vie par défaut de la JVM est définie de façon à ce que la JVM n'actualise jamais les entrées DNS tant qu'elle n'est pas redémarrée. Ainsi, si l'adresse IP d'une AWS ressource change alors que votre application est toujours en cours d'exécution, elle ne pourra pas utiliser cette ressource tant que vous n'aurez pas redémarré manuellement la JVM et que les informations IP mises en cache ne seront pas actualisées. Dans ce cas, il est essentiel de définir la durée de vie de la JVM de façon à ce que ses informations IP mises en cache soient régulièrement actualisées.

Comment configurer le JVM TTL

Pour modifier le TTL de la JVM, définissez la valeur de la propriété de sécurité networkaddress.cache.ttl, définissez la propriété dans le networkaddress.cache.ttl $JAVA_HOME/jre/lib/security/java.security fichier pour Java 8 ou dans le fichier pour Java 11 ou supérieur. $JAVA_HOME/conf/security/java.security

Ce qui suit est un extrait d'un java.security fichier qui montre que le cache TTL est réglé sur 5 secondes.

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

Toutes les applications qui s'exécutent sur la JVM représentée par la variable d'$JAVA_HOMEenvironnement utilisent ce paramètre.