Ich habe ein kleines Java-Programm, das jede Sekunde InetAddress.getByName ("example.com") aufruft. Wenn ich es mit 'strace -f' auf einer CentOS 6.4-Box ausführe, sehe ich, dass /etc/resolv.conf einmal geöffnet und gelesen wird:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Wenn ich es unter Debian 7 starte, sehe ich, dass /etc/resolv.conf wiederholt geöffnet wird oder 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
Beide Systeme haben /etc/nsswitch.conf mit konfiguriert
Hosts: Dateien DNS
Auf keinem System wird ein Name-Caching-Daemon ausgeführt.
Ich habe auf beiden Computern dieselbe Version der Oracle HotSot Java JVM verwendet, um Java-Unterschiede auszuschließen.
Auf der CentOS 6.4-Box ist glibc 2.12 installiert. Auf der Debian 7-Box ist glibc 2.13 installiert.
Was erklärt das unterschiedliche Verhalten der beiden Betriebssysteme beim Öffnen und Lesen von /etc/resolv.conf?