首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

Windows 平台 RMI Naming.lookup 延遲問題:DNS 解析導致的效能瓶頸與解決方案

     編輯:J2EE

現象

Windows 平台使用 `Naming.lookup()` 取得遠端 RMI 物件時,速度極慢(常達數秒至數十秒)。

根因

  • RMI 依賴 `java.net.InetAddress` 進行主機名/IP 雙向解析。
  • Windows 實作委派給本地 Winsock 庫執行 DNS 查詢。
  • 若機器設定使用 DNS 伺服器,但 DNS 無法解析目標主機名 → 查詢超時等待導致延遲。
  • 延遲發生於 Windows 系統庫層級,非 RMI 實作本身問題。

解決方案:修改本地 hosts 檔案

將所有 RMI 通訊涉及的主機名/IP 對應寫入本地解析檔,繞過 DNS 查詢。

檔案路徑

  • Windows NT/2000/XP:`C:\winnt\system32\drivers\etc\hosts`
  • Windows 9x/Me:`C:\Windows\hosts`

格式範例

192.168.1.10   appserver01
192.168.1.11   dbserver01
127.0.0.1      localhost

效果

本地解析毫秒級完成,顯著降低 Naming.lookup 延遲,RMI 連線建立恢復正常速度。

補充建議

  • 確認 `/etc/hosts` (Unix/Linux) 同樣適用此原則。
  • 生產環境建議部署內部 DNS 並確保記錄完整、TTL 合理,避免單點依賴 hosts 檔維護困難。
  • 若使用 IP 直接連線(而非主機名),可完全避開解析延遲,但犧牲部署彈性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved