在部署 Windows Server 2008 叢集與 AD 網域控制站時,DNS 服務常因 CPU 核心數過多導致執行緒超過 120 上限而啟動失敗,事件記錄顯示「DNS 無法建立執行緒」。本文分析根因並提供三種解決方案。
Windows Server 2008 (含 R2) DNS 服務程式碼硬性限制最大執行緒數 120,但未限制 CPU 核心數。DNS 兩大功能執行緒數隨 CPU 核心線性增長:
雙路 8 核心 + 超執行緒 = 32 邏輯處理器 → 64+64=128 執行緒 > 120 上限 → 觸發 ERROR_SERVICE_NO_THREAD。32 位元平台最多 ~86 執行緒,故不發生此問題。
msconfig →「啟動」索引標籤 →「進階選項」將 AD 整合 DNS 區域減少至 18 個以下,可讓執行緒總數落在 120 以內,但會犧牲 DNS 完整功能。
重開機後開啟工作管理員 → 「效能」索引標籤,確認邏輯處理器數量已降至 32,DNS 服務應能正常啟動並持續運作。
注意:此為 Windows DNS 服務已知 Bug,官方修正可能僅回溯至 Windows Server 2008 後續更新,生產環境建議採用方法一或二。
Windows Server 2008 命令列磁碟管理:Diskpart 指令、腳本自動化、Server Core 環境部署實戰
Windows Server 2008 (全功能版) 新增 Hyper-V 角色圖文步驟與虛擬交換器設定
Windows Server 2008 AD 管理三大效率技巧:免重啟離線維護、快速資料庫優化與服務控制
SQL Server AlwaysOn 可用性群組跨 Windows Server 2008 R2 至 2012 叢集零停機遷移實戰
Windows Server 2008 網路疑難排解實用技巧
Windows Server 2008 關閉閒置 IDE 通道提升開機與執行效能
Windows Server 2008 列印伺服器故障排除系統化指南
Windows Server 2008 驅動程式安裝失敗原因與解決:相容性檢查、UAC 阻擋、INF 手動安裝、數位簽章驗證