Domain-Name-System
Java 和 /etc/resolv.conf DNS 伺服器故障轉移
執行摘要
resolv.conf
如果第一個失敗或超時,Java 是否會查詢下一個名稱伺服器條目?- Java 將考慮解析器“關閉”的預設超時是多少?
細節
在
/etc/resolv.conf
大多數站點中,配置了多個 DNS 伺服器供系統使用。如果列表中的第一個 DNS 伺服器出現故障,任何人都可以澄清使用 Java 會發生什麼嗎?例如,想像以下情況resolv.conf
:nameserver 8.8.8.8 nameserver 4.4.4.4
如果 8.8.8.8 變得無法訪問,那麼 Java 會嘗試 4.4.4.4 嗎?根據我們的經驗,它沒有 - 我們看到許多執行緒在等待解析 DNS 名稱,即使備份 DNS 伺服器是可訪問的。
在 Linux 上,java 會將主機名解析委託給進行實際解析的底層 C 系統庫。
在查詢 /etc/nsswitch.conf 中指定的其他資訊源之後,將按照 /etc/resolv.conf 中指定的順序查詢名稱伺服器(想想 /etc/hosts,但可能是 NIS 或 LDAP)。
您可以在 /etc/resolv.conf 中指定超時值,根據手冊頁,預設值為 5 秒。
如果您的第一個伺服器提供有效的錯誤程式碼即 servfail,則不會查詢第二個名稱伺服器