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.ttlnetworkaddress.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()
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