解決Windows Server 2008無法創建線程問題
在安裝Windows Server 2008系統群集過程中,創建AD域控制時最后出錯,無法配置DNS。經排查,系統硬性規定了DNS線程的最大數量為120個,但DNS對CPU的核心數并沒有做限制,因此創建超過120個線程就會報錯。如何解決這個問題呢?
近期,筆者在安裝Windows 2008系統群集,安裝環境為兩臺浪潮英信NF8560M2+存儲+2臺光纖交換機。
安裝步驟大體為:
1.安裝操作系統。
2.安裝系統驅動。
3.安裝系統補丁。
4.存儲掛載和存儲區域劃分(仲裁+共享)。
5.安裝存儲自帶的客戶端程序+Windows自帶的多路徑(I/O)功能(服務器管理→功能→新增功能)。
6.聯機存儲硬盤,添加盤符(仲裁和共享盤符通常為X和Y,可以自定義)。
7.群集配置(具體配置文檔根據要安裝的數據庫可以從網上找到,重點是心跳網卡的設置)。
故障現象
在安裝過程中出現這樣一個問題:在創建AD域控制到最后的時候報錯,提示無法配置DNS,RPC服務器不可用。點擊“確定”和“完成”后,DNS服務器可以創建,但是DNS服務會自動關閉。查看事件日志,顯示DNS無法創建線程。
故障分析
在當前Windows 2008 R2 x64以及Windows 2008或Windows 2008 R2的DNS服務代碼中,硬性規定了DNS線程的最大數量為120個。但是,DNS對CPU的核心數并沒有作任何的限制,因此會創建超過120個線程。
具體來說,DNS服務有2個功能的線程創建是根據CPU數量來決定的,DNS Dynamic update功能以及UDP I/O AND dispatch程序。在64位的機器上,它們會創建64個DNS Dynamic的線程和64個UDP處理線程。因此,在64位CPU的平臺上,線程數量就會大大超過限制的數量,就會報ERROR_SERVICE_NO_THEAD的錯誤。在32位的平臺上,DNS服務就工作正常,因為它最多創建86左右的線程。
筆者單位所用的服務器配置4路8核CPU,默認開啟了超線程技術,實際32位可以模擬到64位(任務管理器→性能一欄可以查看)。
解決方法
目前確認這個是Windows DNS服務的一個Bug,但是這個問題可能僅會在Windows 2008中被修復。因此,當下我們惟一的選擇是使用少于48位CPU的平臺來提供DNS服務(我們可以通過減少AD集成的DNS區域18個來符合線程的限制) 。當然,如果我們僅用32位CPU,那就更沒有問題了。具體解決步驟如下:
1.點擊“開始”→“運行”,鍵入“msconfig”,彈出“系統配置”窗口,在“啟動”選項里找到“高級”選項卡,更改CPU個數,將其改為32。
2.開機后進“BIOS→Advanced→Process&Clock→intel HT technology”,把這里默認的Enable改為Disabled。
修改完成后,在“任務管理器→性能”一欄中,可以看到CPU數量調整為32個,問題由此解決。
關鍵字:Server 2008、系統群集、DNS服務
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解