View a markdown version of this page

Mengatur JVM TTL untuk pencarian nama DNS - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengatur JVM TTL untuk pencarian nama DNS

Mesin virtual Java (JVM) menyimpan cache pencarian nama DNS. Ketika JVM menyelesaikan nama host ke alamat IP, itu menyimpan alamat IP untuk jangka waktu tertentu, yang dikenal sebagai (TTL). time-to-live

Karena AWS sumber daya menggunakan entri nama DNS yang terkadang berubah, kami sarankan Anda mengonfigurasi JVM Anda dengan nilai TTL 5 detik. Ini memastikan bahwa ketika alamat IP sumber daya berubah, aplikasi Anda akan dapat menerima dan menggunakan alamat IP baru sumber daya dengan meminta DNS.

Pada beberapa konfigurasi Java, TTL default JVM diatur sehingga tidak akan pernah menyegarkan entri DNS sampai JVM dimulai ulang. Jadi, jika alamat IP untuk AWS sumber daya berubah saat aplikasi Anda masih berjalan, itu tidak akan dapat menggunakan sumber daya itu sampai Anda secara manual me-restart JVM dan informasi IP cache di-refresh. Dalam hal ini, sangat penting untuk mengatur TTL JVM sehingga secara berkala akan menyegarkan informasi IP cache.

Cara mengatur JVM TTL

Untuk memodifikasi TTL JVM, atur nilai properti keamanan networkaddress.cache.ttl. Perhatikan bahwa networkaddress.cache.ttl adalah properti keamanan, bukan properti sistem, yaitu, tidak dapat diatur dengan flag -D baris perintah.

Opsi 1: Atur secara terprogram di aplikasi Anda

Panggilan di java.security.Security.setProperty()awal startup aplikasi Anda, sebelum klien AWS SDK dibuat dan sebelum permintaan jaringan dibuat:

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 } }

Opsi 2: Atur di file java.security

Mengatur networkaddress.cache.ttl properti dalam $JAVA_HOME/jre/lib/security/java.security file untuk Java 8 atau $JAVA_HOME/conf/security/java.security file untuk Java 11 atau lebih tinggi.

Berikut ini adalah cuplikan dari java.security file yang menunjukkan cache TTL diatur ke 5 detik.

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

Semua aplikasi yang berjalan pada JVM diwakili oleh variabel $JAVA_HOME lingkungan menggunakan pengaturan ini.

Opsi 3: Gunakan fallback properti sistem JDK (baris perintah)

Jika Anda tidak dapat mengubah konfigurasi atau kode keamanan, Anda dapat menggunakan properti sistem JDK. Ini bertindak sebagai fallback jika tidak ada properti keamanan yang didefinisikan.

  • sun.net.inetaddr.ttl— Mengontrol pencarian yang berhasil (TTL positif)

  • sun.net.inetaddr.negative.ttl— Kontrol pencarian gagal (TTL negatif)

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

Ini adalah properti JDK-internal yang didokumentasikan dalam referensi Oracle Java 8 Networking Properties sebagai properti pribadi yang “mungkin tidak didukung dalam rilis masa depan”. Gunakan Opsi 1-2 jika memungkinkan.