網域系統轉發器斷線或切換要等十五秒致使端點超時,可以點樣微調個超時參數?

Ping Wang 60 信譽點數
2026-08-07T05:28:08.4+00:00

各位好,想請教下視窗伺服器網域系統嘅設定問題。

最近發現主要外部網域轉發器死咗或者高延遲嗰陣,網域系統伺服器要停滯成十五秒先識切換去備用轉發器。結果下游啲客戶端機器行網絡瀏覽器全部超時,出唔到網頁。

查過係視窗網域系統預設個遞歸同埋轉發器超時設定得太保守。想問下除咗改網域控制台裏面轉發器個超時秒數之外,內部遞歸仲有冇咩註冊表呢類隱藏參數唔記得設?

大家正式生產環境唔想佢呼叫唔到主要伺服器就延遲咁久,平時會將轉發超時減到幾多秒(例如兩至三秒)?多謝指教!

商務用 Windows | Windows 365 企業版
0 則留言 沒有留言

1 個回答

排序依據: 最實用
  1. Brian Huynh 3,815 信譽點數 Microsoft 外部員工
    2026-08-12T07:10:12.6033333+00:00

    您好 Ping Wang,感謝您在 Microsoft Q&A 社群發帖。

    您觀察到的 15 秒停滯,正是因為 Windows Server DNS 的預設參數設定較為保守:

    1. 預設 Recursion Timeout (遞歸超時): Windows DNS 預設的 RecursionTimeout 正好就是 15 秒!當 DNS 伺服器發起遞歸查詢或透過轉發器查詢無回應時,底層會一直等待直至 15 秒計時器結束。
    2. 轉發器重試機制 (Forwarder Retries): 當主要的轉發器沒有回應時,DNS 服務會依據 ForwardingTimeout(預設為 3~5 秒)重複嘗試多次,多個轉發器與重試次數相加,極易達到 Client 端(如 Chrome/Edge 瀏覽器預設 5~10 秒超時)的等待上限,導致網頁直接顯示超時錯誤。
    3. GUI 介面設定 (DNS 管理器)
    4. 開啟 DNS 管理器 (dnsmgmt.msc)。
    5. 在左側對著您的 DNS 伺服器 名稱按右鍵,選擇 內容 (Properties)
    6. 切換至 轉發器 (Forwarders) 頁籤:
      • 轉發查詢超時秒數 (Number of seconds before forward queries time out) 由預設的 3 或 5 秒調整為 2 秒
    7. (可選) 若您的環境不需要透過根功能功能表,可勾選 當沒有可用的轉發器時,不要使用根提示 (Do not use root hints if no forwarders are available),避免轉發器失敗時又花費時間去查詢 Root DNS。
    8. 註冊表 (Registry) 隱藏微調參數 (關鍵 15 秒參數)

    安全性警告: 修改機碼前,請先備份 DNS 服務相關機碼。修改後需重啟 DNS Server 服務。

    請開啟 註冊表編輯器 (regedit) 並導航至以下路徑:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters

    在右側新增或修改以下 DWORD (32-位元) 值

    1. ForwardingTimeout (DWORD)
      • 作用: 單次向轉發器發出查詢的超時時間。
      • 建議值: 2 (十進位,單位:秒)。
    2. RecursionTimeout (DWORD)
      • 作用: 控制 DNS 伺服器等待遞歸查詢回應的最長時間(這就是導致 15 秒停滯的主因)。
      • 建議值: 35 (十進位,預設為 15 秒)。
    3. RecursionRetry (DWORD)
      • 作用: 遞歸查詢重試的時間間隔。
      • 建議值: 12 (十進位,預設為 3 秒)。
    4. MaxNegativeCacheTtl (DWORD)
      • 作用: 否定快取 (Negative Cache / NXDOMAIN / 超時失敗) 的快取時間。若設定太長,轉發器短暫故障會導致 Client 在接下來幾分鐘內都拿到失敗紀錄。
      • 建議值: 515 (十進位,單位:秒,預設可高達 300~900 秒)。
    5. PowerShell 自動化設定與 DNS 服務重啟

    您也可以直接開啟 PowerShell (系統管理員) 快速執行以下指令完成設定:

    # 1. 將轉發器超時時間設為 2 秒
    Set-DnsServerForwarder -Timeout 2
     
    # 2. 將遞歸超時時間設為 3 秒,重試間隔設為 1 秒
    Set-DnsServerSetting -RecursionTimeout 3 -RecursionRetry 1
     
    # 3. 調整否定快取 TTL 為 10 秒
    Set-DnsServerSetting -MaxNegativeCacheTtl 00:00:10
     
    # 4. 重啟 DNS Server 服務使設定生效
    Restart-Service DNS
    

    正式生產環境最佳實踐建議 (Best Practices)

    • 轉發器超時 (Forwarder Timeout): 正式環境建議設為 2 秒。網際網路 DNS 伺服器若正常,回應時間通常在 20~100ms 內,2 秒足以涵蓋正常波動。
    • 遞歸超時 (Recursion Timeout): 建議設為 3 ~ 5 秒
    • 備用轉發器配置: 建議配置 2 至 3 個高可用性且不同營運商/來源的上游 DNS(例如公共 DNS 1.1.1.18.8.8.8 或 ISP 的 DNS),並確保順序優先級正確。

    診斷資訊請求

    若調整上述參數後仍覺得切換過程有延遲,請在 PowerShell (系統管理員) 執行以下指令並提供輸出結果,以便為您進一步分析當前 DNS 設定:

    Get-DnsServerForwarder
    Get-DnsServerSetting | Select-Object RecursionTimeout, RecursionRetry, MaxNegativeCacheTtl, ForwardingTimeout
    

    希望上述微調參數與 PowerShell 指令能協助您成功將切換時間縮短至 2~3 秒內,解決客戶端網頁超時的問題!若處理過程中有任何疑問,歡迎隨時在本討論串留言回覆,我會持續為您跟進。

    如果這個解答對您有所幫助,請考慮將其標記為 「接受解答 (Accept Answer)」,這將有助於社群中其他遇到 Windows Server DNS 轉發超時問題的工程師快速找到解決方案!

    相關 Microsoft Learn 官方說明文件:

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。