ฉันมีโปรแกรม Java ขนาดเล็กที่เรียกใช้ InetAddress.getByName ("example.com") ทุกวินาที เมื่อฉันเรียกใช้บนกล่อง CentOS 6.4 โดยใช้ 'strace -f' ฉันเห็นว่า /etc/resolv.conf เปิดขึ้นและอ่านครั้งเดียว:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
เมื่อฉันเรียกใช้บน Debian 7 ฉันเห็นว่า /etc/resolv.conf เปิดซ้ำ ๆ หรือ 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
ทั้งสองระบบมี /etc/nsswitch.conf ตั้งค่าด้วย
โฮสต์: ไฟล์ DNS
ทั้งสองระบบไม่มี daemon การแคชชื่อกำลังทำงาน
ฉันใช้ Oracle HotSot Java JVM เวอร์ชันเดียวกันกับทั้งสองเครื่องเพื่อแยกแยะความแตกต่างของ Java
กล่อง CentOS 6.4 ติดตั้ง glibc 2.12 กล่อง Debian 7 ติดตั้ง glibc 2.13
สิ่งที่บัญชีสำหรับพฤติกรรมที่แตกต่างระหว่างสองระบบปฏิบัติการที่เกี่ยวข้องกับการเปิดและอ่าน /etc/resolv.conf?