Saya memiliki program Java kecil yang loop memanggil InetAddress.getByName ("example.com") setiap detik. Ketika saya menjalankannya pada kotak CentOS 6.4 menggunakan 'strace -f' saya melihat bahwa /etc/resolv.conf dibuka dan dibaca sekali:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Ketika saya menjalankannya di Debian 7 saya melihat bahwa /etc/resolv.conf berulang kali dibuka atau stat () 'd:
$ grep /etc/resolv.conf strace.out
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
Kedua sistem memiliki konfigurasi /etc/nsswitch.conf
host: file dns
Sistem tidak memiliki daemon caching nama yang berjalan.
Saya menggunakan versi yang sama dari Oracle HotSot Java JVM pada kedua mesin untuk menyingkirkan perbedaan Java.
Kotak CentOS 6.4 telah menginstal glibc 2.12. Kotak Debian 7 telah menginstal glibc 2.13.
Apa yang menyebabkan perilaku yang berbeda antara kedua sistem operasi sehubungan dengan membuka dan membaca /etc/resolv.conf?