

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Legen Sie die JVM-TTL für DNS-Namenssuchen fest
<a name="jvm-ttl-dns"></a>

Die Java Virtual Machine (JVM) speichert DNS-Namensauflösungen zwischen. Wenn die JVM einen Hostnamen in eine IP-Adresse auflöst, speichert sie die IP-Adresse für einen bestimmten Zeitraum, der als (TTL) bezeichnet wird. *time-to-live*

Da AWS Ressourcen DNS-Namenseinträge verwenden, die sich gelegentlich ändern, empfehlen wir, dass Sie Ihre JVM mit einem TTL-Wert von 5 Sekunden konfigurieren. Auf diese Weise wird bei Änderung der IP-Adresse einer Ressource sichergestellt, dass Ihre Anwendung die neue IP-Adresse der Ressource durch erneute Abfrage des DNS abrufen und nutzen kann.

Bei einigen Java-Konfigurationen ist die JVM-Standard-TTL so festgelegt, dass DNS-Einträge *nie* aktualisiert werden, bis die JVM neu gestartet wird. Wenn sich also die IP-Adresse einer AWS Ressource ändert, während Ihre Anwendung noch läuft, kann sie diese Ressource erst verwenden, wenn Sie die JVM *manuell neu starten* und die zwischengespeicherten IP-Informationen aktualisiert werden. In diesem Fall ist es wichtig, die TTL der JVM so einzustellen, dass sie die zwischengespeicherten IP-Daten von Zeit zu Zeit aktualisiert.

## Wie legt man die JVM-TTL fest
<a name="how-to-set-the-jvm-ttl"></a>

Um die TTL der JVM zu ändern, legen Sie den Sicherheitseigenschaftswert [networkaddress.cache.ttl](https://docs.oracle.com/en/java/javase/17/core/java-networking.html#GUID-A680DADB-C4C1-40F1-B568-D9A97C917F5D) fest. Beachten Sie, dass `networkaddress.cache.ttl` es sich um eine *Sicherheitseigenschaft und nicht um eine Systemeigenschaft* handelt, d. h. sie kann nicht mit dem Befehlszeilen-Flag gesetzt werden. `-D`

### Option 1: Stellen Sie sie programmgesteuert in Ihrer Anwendung ein
<a name="set-ttl-programmatically"></a>

Rufen Sie [https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/Security.html](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/Security.html)früh beim Start Ihrer Anwendung an, bevor AWS SDK-Clients erstellt werden und bevor Netzwerkanforderungen gestellt werden:

```
import java.security.Security;

public class MyApplication {
    public static void main(String[] args) {
        Security.setProperty("networkaddress.cache.ttl", "5");

        // ... create SDK clients and run application
    }
}
```

### Option 2: Legen Sie es in der Datei java.security fest
<a name="set-ttl-java-security-file"></a>

Legen Sie die `networkaddress.cache.ttl` Eigenschaft in der `$JAVA_HOME/jre/lib/security/java.security` Datei für Java 8 oder der `$JAVA_HOME/conf/security/java.security` Datei für Java 11 oder höher fest.

Das Folgende ist ein Ausschnitt aus einer `java.security` Datei, die zeigt, dass der TTL-Cache auf 5 Sekunden eingestellt ist.

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

Alle Anwendungen, die auf der durch die `$JAVA_HOME` Umgebungsvariable repräsentierten JVM ausgeführt werden, verwenden diese Einstellung.

### Option 3: Verwenden Sie das Fallback für JDK-Systemeigenschaften (Befehlszeile)
<a name="set-ttl-system-property"></a>

Wenn Sie die Sicherheitskonfiguration oder den Sicherheitscode nicht ändern können, können Sie die JDK-Systemeigenschaften verwenden. Diese dienen als Fallbacks, wenn keine Sicherheitseigenschaft definiert ist.
+ `sun.net.inetaddr.ttl`— Steuert erfolgreiche Suchvorgänge (positive TTL)
+ `sun.net.inetaddr.negative.ttl`— Steuert fehlgeschlagene Suchvorgänge (negative TTL)

```
java -Dsun.net.inetaddr.ttl=5 -Dsun.net.inetaddr.negative.ttl=1 -jar myapp.jar
```

**Anmerkung**  
Dies sind JDK-interne Eigenschaften, die in der [Oracle Java 8 Networking Properties](https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html) Reference als private Eigenschaften dokumentiert sind und „in future Versionen möglicherweise nicht unterstützt werden“. Verwenden Sie nach Möglichkeit die Optionen 1—2.