Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows Server 系統教學 >> Server 2008

解決 Windows Server 2008 DNS 服務「無法建立執行緒」錯誤:CPU 核心數超過限制導致 RPC 服務不可用

編輯:Server 2008

在部署 Windows Server 2008 叢集與 AD 網域控制站時,DNS 服務常因 CPU 核心數過多導致執行緒超過 120 上限而啟動失敗,事件記錄顯示「DNS 無法建立執行緒」。本文分析根因並提供三種解決方案。

錯誤現象

  • 建立 AD 網域控制站最終步驟報錯:「無法設定 DNS,RPC 伺服器無法使用」
  • DNS 服務自動停止,事件檢視器記錄 Event ID 相關錯誤
  • 環境:雙節點叢集、共享存儲、多路徑 I/O、心跳網卡設定

根因分析

Windows Server 2008 (含 R2) DNS 服務程式碼硬性限制最大執行緒數 120,但未限制 CPU 核心數。DNS 兩大功能執行緒數隨 CPU 核心線性增長:

  • DNS 動態更新:每核心 1 執行緒 (x64 環境 64 執行緒)
  • UDP I/O 與 Dispatch:每核心 1 執行緒 (x64 環境 64 執行緒)

雙路 8 核心 + 超執行緒 = 32 邏輯處理器 → 64+64=128 執行緒 > 120 上限 → 觸發 ERROR_SERVICE_NO_THREAD。32 位元平台最多 ~86 執行緒,故不發生此問題。

解決方案

方法一:msconfig 限制啟動處理器數量 (建議)

  1. 執行 msconfig →「啟動」索引標籤 →「進階選項」
  2. 勾選「處理器數目」,設為 32 (或 ≤ 48 核心)
  3. 重新開機

方法二:BIOS 關閉 Hyper-Threading

  1. 進入 BIOS → Advanced → Processor & Clock → Intel HT Technology
  2. 設為 Disabled
  3. 儲存離開重開機

方法三:減少 AD 整合 DNS 區域數量 (替代方案)

將 AD 整合 DNS 區域減少至 18 個以下,可讓執行緒總數落在 120 以內,但會犧牲 DNS 完整功能。

驗證修正

重開機後開啟工作管理員 → 「效能」索引標籤,確認邏輯處理器數量已降至 32,DNS 服務應能正常啟動並持續運作。

注意:此為 Windows DNS 服務已知 Bug,官方修正可能僅回溯至 Windows Server 2008 後續更新,生產環境建議採用方法一或二。
Copyright © Windows教程網 All Rights Reserved