引言:?jiǎn)挝话惭bWindows 2008群集,在安裝過程中出現(xiàn)一個(gè)問題,建AD時(shí)報(bào)錯(cuò)提示無法配置DNS,RPC服務(wù)器不可用。安裝完成后,DNS服務(wù)器可以創(chuàng)建,但是DNS服務(wù)會(huì)自動(dòng)關(guān)閉,查看事件日志顯示DNS無法創(chuàng)建線程。本文介紹故障的處理方法。
最近,單位安裝Windows 2008群 集,安裝環(huán)境為:兩臺(tái)NF8560M2+存儲(chǔ)+2臺(tái)光纖交換機(jī)。
結(jié)合項(xiàng)目,安裝步驟大體為:a.安裝操作系統(tǒng),b.安裝系統(tǒng)驅(qū)動(dòng),c.安裝系統(tǒng)補(bǔ)丁,d.存儲(chǔ)掛載和存儲(chǔ)區(qū)域劃分(仲裁+共享),e.安裝存儲(chǔ)自帶的客戶端程+Windows自帶的多路徑(I/O)功能(服務(wù)器管理→功能→新增功能),f.聯(lián)機(jī)存儲(chǔ)硬盤,添加盤符(仲裁和共享盤符通常為X和Y,可以自定義),g.群集配置(具體配置文檔根據(jù)要安裝的數(shù)據(jù)庫可以從網(wǎng)上找下,重點(diǎn)是心跳網(wǎng)卡設(shè)置)。
但是,在本次安裝的過程中出現(xiàn)了這樣一個(gè)問題:建AD到最后的時(shí)候報(bào)錯(cuò)提示無法配置DNS,RPC服務(wù)器不可用,點(diǎn)“確定”和“完成”,DNS服務(wù)器可以創(chuàng)建,但是DNS服務(wù)會(huì)自動(dòng)關(guān)閉。查看事件日志顯示,DNS無法創(chuàng)建線程。
經(jīng)探討驗(yàn)證,發(fā)現(xiàn)引起故障的主要原因?yàn)椋涸诋?dāng)前Windows 2003 R2 x64以及Windows Server 2008或Windows Server 2008 R2 DNS服務(wù)的代碼中硬性規(guī)定了DNS線程的最大數(shù)量為120個(gè)(這個(gè)是寫死在代碼中的)。但是,DNS對(duì)CPU的核心數(shù)并沒有作任何的限制,因此會(huì)創(chuàng)建超過120個(gè)線程。
具體來說,DNS服務(wù)有2個(gè)功能的線程創(chuàng)建是根據(jù)CPU數(shù)量來決定的,一個(gè)是DNS Dynamic update功能以及 UDP I/O and dispatch程序。在64核的機(jī)器上,它們會(huì)創(chuàng)建64個(gè)Dynamic update的線程和64個(gè)UDP處理線程。因此,在64核CPU的平臺(tái)上,線程數(shù)量就會(huì)大大地超過限制的數(shù)量。64×2+ (64/2 or NumberOfZones ) +6 =Max 166 > 120, 因此就會(huì)報(bào)ERROR_SERVICE_NO_THREAD的錯(cuò)誤。在32核的平臺(tái)上,DNS服務(wù)就工作正常,因?yàn)樗疃鄤?chuàng)建86左右的線程。32×2 +16+6=86 threads。
本項(xiàng)目服務(wù)器配置4路8核CPU,默認(rèn)開啟了超線程技術(shù),實(shí)際32核可以模擬到64核(任務(wù)管理器→性能一欄可以查看)。
針對(duì)故障,我們最終是這樣解決的:已經(jīng)確認(rèn)這個(gè)是Windows DNS服務(wù)的一個(gè)Bug,我們惟一的選擇是使用少于48核CPU的平臺(tái)來提供DNS服務(wù)。48×2+18+6=120(我們可以通過減少AD集成的DNS區(qū)域到18個(gè)來符合線程的限制)。當(dāng)然,如果我們僅用32核CPU,那就更沒有問題了。
具體方法有兩個(gè):
1.點(diǎn)擊“開始→運(yùn)行”,鍵入msconfig,調(diào)出“系統(tǒng)配置”窗口,在“啟動(dòng)”選項(xiàng)里找到“高級(jí)選項(xiàng)卡”,更改CPU個(gè)數(shù),改為32。
2.開機(jī)后進(jìn)BIOS→A dvanced→Process&Clock→in tel HT technology,把 這個(gè)地方默認(rèn)的Enable改成Disabled。
修改完成后,在“任務(wù)管理器→性能”一欄,可以看到CPU數(shù)量已經(jīng)調(diào)整為32個(gè)。