毎秒InetAddress.getByName( "example.com")を呼び出すループを実行する小さなJavaプログラムがあります。'strace -f'を使用してCentOS 6.4ボックスで実行すると、/ etc / resolv.confが開かれて1回読み取られることがわかります。
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Debian 7で実行すると、/ etc / resolv.confが繰り返し開かれているか、stat()されていることがわかります。
$ 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
両方のシステムで/etc/nsswitch.confが構成されています
ホスト:ファイルdns
どちらのシステムでも、ネームキャッシングデーモンは実行されていません。
両方のマシンで同じバージョンのOracle HotSot Java JVMを使用して、Javaの違いを排除しました。
CentOS 6.4ボックスにはglibc 2.12がインストールされています。Debian 7ボックスにはglibc 2.13がインストールされています。
/etc/resolv.confのオープンと読み取りに関して、2つのオペレーティングシステム間の異なる動作を説明するものは何ですか?