■ 顧武雄
初步完成部署的Windows Server 2012 R2 系統,無論是用來創建網站應用還是文件服務器等應用,其運行速度與穩定性都相當優越。但奇怪的是,只要持續運行一年半載之后,就會有用戶反映連接速度變慢,開啟文件的時間變長等問題。關于系統性能降低的問題,究竟是硬件問題、軟件問題、網絡問題還是系統配置不當所造成?如何解決?且看本文為大家提供問題診斷以及性能優化的良方。

企業中任何新信息系統的導入,在基礎架構的規劃上除了需要做到高可靠度、高擴展性以及高可用性之外(俗稱“IT 三高”),還必須考慮到運行性能層面的問題。當然這部分牽扯到的影響因素也相當多,包括了主機硬件、操作系統、拓撲設計、網絡規劃、存儲規劃和程序設計等。
然而對于一位Windows Server 的系統架構師而言,最重要的一件事就是先把整個拓撲架構中的每一部服務器,在最高安全的基礎上,完成系統優化的調整任務,更積極的做法則是想盡一切辦法,把Windows Server 的系統性能發揮到極致。如此一來,即便將來遇到應用系統性能降低的問題時,也能夠縮小需要徹底檢測的范圍。
根據筆者過去在Windows Server 優化的調整經驗,整體而言我們可以將它區分為事前調整與事后調整。前者主要是讓系統人員先根據要導入的應用系統類型,包括了它所要采用的網站平臺、數據庫系統和數據存儲方式等,再來決定所要準備的處理器規格、內存大小、網絡設計、存儲架構以及相關軟件與系統服務的部署方式。
舉個例子來說,當您準備在多部Windows Server 上部署Microsoft Exchange Server 時的環境準備,相較于在相同的操作系統條件下部署IBM Domino Server,其做法就會有很明顯的不同,像是在存放數據的磁盤數組(RAID)規劃上,由于雙方無論是在數據庫的架構設計還是訪問方式上皆不一樣,為了提升數據讀寫上的性能,前者會較適合采用RIAD 5而后者則是RIAD 0+1。
在接下來的內容當中,我們將整個系統調整的重點集中在Windows Server 2012 R2 本身,詳解如何學習從基礎的監視開始,來找出影響系統運行性能不佳的癥結點,進而通過內置的管理工具以及原廠所提供的進階輔助工具,協助提升現行網域、網絡、網站以及操作系統本身的運行性能。
在Windows 任務管理的CPU 性能負載檢測中,您可以選擇以整體使用率或邏輯處理方式檢測CPU 的性能。一般來說我們會建議采用后者的方式,因為如此一來就可以知道每一個核心資源的負載情形,根據經驗,若系統人員發現有其中一個核心始終維持在100%的狀態下,通??赡艿脑驎悄吃O備的驅動程序或固件尚未更新。當然也有可能是因為特定的Windows 更新程序所造成,只要移除后并重新安裝往往可以解決此問題。
此外,對于采用服務器等級(或繪圖任務站)專用的Intel XEON 系列CPU 時,您還可以進一步檢測“NUMA節點”的性能狀態。所謂的NUMA(Non-uniform memory access)即是非統一內存訪問功能,此功能主要設計在多顆處理器的應用中,而內存的訪問時間將依附在相對的處理位置,它的優點在于能夠限制于特定的任務負載,尤其是針對某些數據的處理與所關聯的任務與用戶,善用線程對于從在本地內存,來配置緩沖區分頁訪問內存,會比從外部內存訪問更有效率的特性,來大幅提升整體的處理性能。
舉例來說,SQL Server就是典型的應用,它不需要特殊的配置設置就可在支持NUMA 的硬件上順利執行,它會為每一個節點記錄多模式配置信息及CPU 屏蔽,讓客戶端程序在連接時會綁定到其中一個NUMA 節點,以處理此客戶端的所有批量要求,藉此提升SQL 腳本的執行速度。
除了CPU、內存狀態以及硬盤的讀寫效率會影響系統的運行效率之外,網絡流量的使用情形也是其中的關鍵因素。這是因為如今的許多應用程序設計,不再只是提供內部網絡用戶的訪問需要,而是擴展到對于大量行動任務者的服務提供,也因此在服務器物理網絡連接的規劃上,更會針對不同的來源網絡流量(例如VPN、Wi-Fi、VLAN 和iSCSI)進行分流監測與管理。
為此,您除了可以通過“任務管理員”中的個別網絡連接,來進行實時的總流量監視之外,也可以通過右鍵選項來開啟“檢測網絡詳細數據”。這種檢測方式的優點在于,可以讓系統人員更清楚每一個字段屬性的狀態,并且可以借此比較各網絡于本系統的使用情形,必要時可以進一步通過NIC 小組功能,來改善某些大流量網絡的使用。
當一臺Windows Server 2012 R2 的主機上同時運行了多個網絡應用系統時,我們除了需要根據它們各自的負載情況,來調整專屬的網絡連接之外,最好還能夠依據它們的重要性,來調整它們對于資源使用的優先級。
在此,您除了可以對于特定運行中的執行程序,設置其優先級之外,還可以進一步配置它對于多核心CPU 資源的親和性。
在處理器親和性的配置頁面中,我們可以讓某些應用程序限定在特定CPU 核心數的使用。如此一來,當同時有許多應用程序都需要較多的處理器資源時,便不會讓一些較重要的執行程序(例如w3wp.exe)因短缺資源,而造成性能的運行大受影響。
當上述的任一資源負載很大而無法降下來時,就必須進到更深層的資源查看器中,來揪出最終造成性能瓶頸的兇手。
可點擊左下方的“開啟資源監視器”連接繼續。在“資源監視器”界面中,可以細看到每一支執行中的程序,對于CPU、內存、磁盤以及網絡的資源使用情形。
其中在“網絡”窗口中對于每一個程序的主機地址、發送及接收狀態的觀察更是重要,因為往往有發生像蠕蟲一樣的病毒感染時,其顯著的中毒征狀就是網絡的數據包發送與接收量會異常的沖高。
為有效避免當Windows Server 2012 R2 系統的運行發生性能不佳的情況時,不知道究竟是CPU、內存、存儲設備還是網絡所造成的問題,最好的做法就是在操作系統、所有設備驅動程序以及Windows 更新皆完成時,先創建好第一次的性能基線,等到所需要的應用系統或數據庫等系統都完成上線之后,再來創建第二個性能基線。
有了上述兩個性能基線,未來一旦發生在相同的系統條件下,有性能降低的情況發時,便能夠再一次創建性能的記錄,然后通過與前兩次性能基線的比較,找出真正影響性能表現的主要原因。
先從“服務器管理員”界面中開啟“性能監視器”界面。在此,您可以點擊添加圖標,來加入所要監測的資源使用率,在實時監測的過程之中,還可以隨時切換折線圖、直方圖以及報告的監測。

圖1 實時性能報告
如圖1 所示便是實時性能的報告監測,這種監測方式可以很明確實時監測到某一些重要性能數據的變化。例如在這個范例中,我們除了可以監測幾項常見的CPU、磁盤以及內存數據之外,請特別注意其中Memory 下的“Pages/sec”與System 下的“Processor Queue Length”,因此兩者的數據在正常性能的情況下應維持在0 的狀態,若是持續向上攀升時,前者肯定是內存不足,而后者則是CPU 的性能不夠。此時您只有兩條路可以選擇,那就是增加更多的物理內存與升級CPU 的等級,或是移除高負載的應用系統。
看完了實時監測主機性能的表現方法后,接下來就讓我們來學習創建性能基線的方法。在“用戶工具”的節點上,按下鼠標右鍵并點擊“添加→數據收集器集合工具”繼續。
接著在此頁面中輸入此新收集器的名稱,以及決定要從內置的模板還是選擇使用進階的手動創建。在此我們選擇后者,點擊“下一步”按鈕。
接著點擊“添加”按鈕來挑選所有想要監測的性能對象,并且設置想要的抽樣時間。
請注意!每一次創建的性能基線,其所監測的對象清單與抽樣時間務必要相同。最后可以決定是否要以特定的帳戶來執行此數據收集器。然后便可以決定是否要立即啟動這個數據收集器,或是想要開啟此數據收集器的內容,以便設置自動執行的計劃等設置。
完成了系統性能基線收集器的創建之后,您可以點擊其“內容”來設置執行計劃,或是通過鼠標右鍵來點擊“開始”并在想要結束時點擊“停止”即可。在性能收集后的圖表報告檢視中,您可以將想要監測的間距縮小至重點區域,像是CPU 與內存使用率較高的時間區段,然后再按下鼠標右鍵點擊“縮放為”來進行該區段的放大監測。
最佳實踐分析程序(BPA,Best Practices Analyzer) 內置于Windows Server 2012 R2 的服務器管理工具中,主要用途在于針對現行已安裝的服務器角色進行掃描,找出任何已知可能影響穩定以及性能的原因,并提供可行的在線解決方案。
以筆者的服務器來說,在BPA 分析結果中,就可以看到系統立即發現到兩項可能影響文件服務器運作性能的設置,分別是Srv.sys 應該設置為依需求啟動、應停用創建短文件名的功能,并且都有提供相對應的在線Technet 解決方案。
在此我們以解決第二項問題為例,原因是這個問題確實會為一臺需要大流量訪問的文件服務器,造成相當大的性能負擔。
因此除非在您公司的網絡中仍有其它應用系統,只能夠唯一訪問短檔名的文件,否則唯有關閉描述中的創建短文件名功能,才能有效避開此問題的發生。
經由BPA 所診斷出來的每一個問題說明,其內容下方都會有一個超鏈接,點擊后將會開啟在線的解決方案。
我們可以依據此在線說明指引,先從“開始→執行”的方塊中輸入“regedit”,然后從“登錄編輯程序”界面中切換至“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFile System”節點下,將可以看到許多文件系統有關的參數設置,包括了對NTFS 文件系統的壓縮、加密以及配額通知頻率設置等等,這些默認值您都可以根據實際文件系統運行的需要來進行調整。開啟“NtfsDisable8dot3Name Creation”繼續。
將“NtfsDisable8 dot3NameCreation”修改為1 即可。成功關閉默認創建短文件名的功能之后,后續系統便不會再為每一個經由各種途徑,所存儲的長文件名的文件,再來特別創建一個相對八個字符的主文件名與三個字符的擴展名,解除了可能嚴重降低文件服務器性能的第一個頭號隱患。
對于部署在一個擁有良好Active Directory 基礎下的Windows Server 2012 R2服務器,系統人員除了要養成定期對于每一部服務器,進行硬件設備與文件系統健康的檢測習慣外,最好是還能夠連同Active Directory的健康狀態一并檢測。只是要如何來進行呢?
很簡單!建議您從兩個方面去執行檢測作業,首先是檢測網域中各個控制站(DC) 的復寫情形,這部分基本上只要善用Active Directory 專屬的幾 個Windows PowerShell Cmdlet 即 可,分 別 是Get-ADReplicationFailure、Get-AD Replication Attribute Metadata、Get-AD Replication Partner Metadata、Get-ADReplication Queue Operation、Sync-ADObject、Get-ADReplicationUpToDat enessVectorTable。
其中Get-ADReplication Failure 命令就可以幫您立即取得整個網域中所有域控制器點復寫情形,或是僅檢查特定域控制器點的復寫健康狀態。例如您可下達Get-ADReplicationFailure dc01.lab01.com。Sync-ADObject 命令則可以協助您針對網域中特定的對象,立即執行復寫至選定的域控制器之中,以便檢測復寫的健康狀態。
第二個部分則是同樣必須在域控制器執行的操作,您只要善用“性能監視器”的“數據收集器集合工具”,在此可以發現它主要診斷的重點分別有追蹤NT 的核心、追蹤Active Directory 配置、相關性能計數器、設置Active Directory 登錄檔,就可以在“系統”節點下,看到一個內置名為“Active Directory Diagnostics”的數據收集器,請在按下鼠標右鍵之后點擊“開始”即可進行持續5 分鐘的診斷。如果想要查看此數據收集器的設置,請開啟“內容”頁面即可。
開啟此數據收集器的“Active Directory”追 蹤內容頁面之后,從“追蹤提供者”頁面中,可以發現它主要追蹤與收集數據的目標列表,包括了Active Directory 網域服務的核心、數據庫、Kerberos 相關
組件等等。在完成“Active Directory Diagnostics”數據收集器的執行之后,將可以立即通過右鍵選單來開啟最新診斷報告,或是從“報告→系統”節點上找到這一些曾經執行過的所有報告。在診斷結果的報告之中,除了可以先查看到此域控制器的所有性能數據之外,還可以進一步查看每一個檢測目標的詳細健康信息,包括了與Active Directory 運行息息相關的目錄服務、LDAP、復寫以及安全性帳戶管理員等。
標準的服務器主機通常內置提供了4 組以上的網卡界面,但在您的企業主機房中,可能僅有少數幾部主機會用到兩組以上的網卡。一般當一臺Windows Server 同時扮演多個應用系統的服務角色時,我們通常會讓不同的服務連接不同的網卡與IP 網段,以分散網絡傳輸時的流量負載。例如,您肯定得將定期備份的網卡與連接獨立出來,然而面對一些大流量且重要的關鍵服務器,僅采用上述的做法恐顯不夠積極,因為您肯定迫切需要更大的網絡帶寬,最好還能夠自動備份的網卡。

圖2 添加NIC 小組
針對想要讓網絡帶寬更大并擁有自動備份能力的需求,在目前的Windows Server 2012 R2 系統中,您可以考慮讓多張網卡合并成所謂的“NIC小組(NIC Teaming)”,這種技術也可稱為LBFO(Load Balancing and Failover),這意味著它可以做到網絡負載均衡與容錯備份的機制。做法很簡單,開啟“服務器管理員”界面,然后便可以在本地服務器頁面中,看到目前的“NIC 小組”顯示“已停用”,點擊“連接”。
接著在“NIC 小組”頁面中,將想要加入NIC 小組的的網卡,在連續選取之后右鍵點擊“添加至新小組”繼續。在如圖2 所示的“添加小組”頁面中,請先輸入一個新的NIC 小組名稱,然后再來設置其他內容的配置。首先在“小組模式”的下拉選單中,分別有靜態小組、交換機獨立和LCAP 三種模式。
其中交換機獨立相當適合使用在文件服務器的連接訪問,因為它會將客戶端的文件下載要求,通過小組中的網卡來同時輸出,可顯著加速同時多文件的傳輸速度。而對于某些網站或應用,需要同時輸出與輸入流量,都能分散在多片網卡使用,則可以在支持的網絡交換機上啟用LACP功能,然后搭配NIC 小組的LCAP 模式支持即可。
接著在“負載均衡模式”部分,如圖2所示可以選擇采用地址哈希、Hyper-v端口或是動態演算方式,其中地址哈希便是常見的根據網卡MAC地址、IP地址以及端口來作為識別。而Hyper-v端口顧名思義就是適用在虛擬機網絡的作業環境,它也是根據其虛擬網卡的MAC地址來作為識別。最后的動態演算方式則是上述兩者的混合。
最后在待命界面卡的下拉字段中,則可以挑選用來作為備份使用的網卡,一般來說我們就會使用兩片網卡來做為流量的負載均衡,第三張網卡則可以用來作為待命使用。
在完成NIC小組創建后,網絡連接頁面中所會出現的NIC小組連接圖標。若您的服務器主機有很多的網卡,可以再繼續添加其他用途的NIC小組。當您再一次從“服務器管理員”界面中開啟所設置的NIC小組時,便會看到目前待命中與作用中的網卡。
接下來建議您檢查目前現行的網絡卡,是否支持接收端調整(RSS,Receive Side Scaling)功能,此功能可以有效做到動態均衡處理器(CPU)中每個核心的負載。因為打從Windows Server 2012版本開始,其系統設計便已增強了RSS功能,支持配備64顆以上處理器的計算器,這意味著它將能夠藉由分布式處理機制,來因應更高的網絡流量負載。
此外,RSS功能也與Windows負載均衡(WNLB)和容錯遷移(Cluster)解決方案兼容,且可以應用在DirectAccess的網絡架構中,通過主動式均衡轉寄流量的負載能力來改善其延展性。
而且,對于頻繁訪問文件服務器的Windows 7以上版本的客戶端而言,可以通過一些登錄檔的修改,來提升整體連接的訪問效率。請在通過“開始→執行”regedit命令之后,切換至“HKLMSystemCurrentControlSetServicesLanman WorkstationParameters”節點下,即可選擇要修改的設置項,包括是否關閉帶寬節流設置(Disable BandwidthThrottling)、設置文件信息最大快取(FileInfoCacheEntries Max)以及設置最大目錄快取(DirectoryCacheEntries Max)。
其中,關閉帶寬節流建議設置為1,而文件信息最大快取建議設置為32768,至目錄快最大快取皆則建議修改為4096。

想要有效找出影響Windows Server 2012 R2系統性能的癥結點,并迅速通過相關的解決方案來改善運行性能,除了可以直接使用系統內置的檢測工具,例如任務管理員、性能監視器、BPA工具等,您還可以到Microsoft網站上去下載一個名為服務器性能專家(SPA,Server Performance Advisor)的分析工具。
在完成下載后無需安裝,只要在命令提示列中先執行extrac32.exe/e/a/l“d:SPA”“d:SPASPAPlus_amd64.cab”命令,來完成解壓縮即可。
接著,在連續點擊SpaConsole.exe程序后,即可開啟管理界面。第一次使用請先從“File”下拉菜單中點擊“New Project”項繼續。
Microsoft Server Performance Advisor下載網址:

在“Create project database”頁面中,必須設置所連接的SQL Server執行與要創建的數據庫名稱,您可以預先在本地計算機中下載與安裝免費的SQL Server Express版本來使用即可(例如localhostSQLExpress),或是使用現行網絡中其它服務器的SQL Server實例也是可以的。
至于數據庫名稱建議您輸入SPA即可。點擊“Next”繼續。
Microsoft SQL Server 2014 Express下載網址:

在“Provision Advisor Packs”頁面中,可以挑選所要安裝的專家程序包,這包括了針對Active Directory一般性能、操作系統核心、Hyper-v服務器以及IIS網站服務的分析,其中Hyper-v的專家程序包并不包含對于Guest OS的診斷分析。點擊“Next”繼續。
在“Add Servers”頁面中,請輸入所有準備要進行診斷分析的Windows Server清單,并且輸入一個UNC共享的網絡活頁夾,以便存放相關報告數據。
完成設置后點擊“Test Configuration”按鈕,來測試每一部服務器的連接是否能夠成功。點擊“Finish”完成設置,后續這項設置仍然可以隨時進行修改的。
完成新項目的創建后,您就可以在管理窗口中勾選所有想要進行診斷分析的服務器,然后點擊窗口右下角的“Run Analysis”按鈕。接著請選擇所要用來執行分析的專家程序包。
在此,還可以自定義收集數據的時間長短,以及設置重復收集數據的間隔時間,點擊“OK”。
如圖3所示在此分析報告中,可以發現有兩則警告信息,分別是磁盤空間不足以及此操作系統安裝于虛擬化環境的警示。
前者可通過磁盤清理工具來協助解決,后者則是建議不要用此Core OS專家應用來診斷虛擬化環境。
進一步您可以查看關于系統整體概觀、CPU、內存、磁盤I/O以及網絡I/O詳細信息。
除了完成診斷分析后的報告檢測,您還可以選擇開啟圖表檢視功能,在“Chart Date Range Picker”頁面中,您可以設置所要檢測的服務器、專家套件以及起訖日期的圖表分析,點擊“OK”。
接著您便可以從下方的窗口之中,挑選想要檢測的性能對象,這包括了所有已收集來的CPU、內存、磁盤以及網絡的性能信息。

圖3 檢測分析報告
在此您還可以通過上方的頁簽,來檢測每周、每天或是每小時的性能趨勢分析圖表。
首先,Sysinternals Utilities主要由幾個工具程序包類別所組成,分別是文件與磁盤、網絡、處理程序、安全、系統信息以及雜項工具。
在每一個類別中都有許多相關的命令工具或圖形界面工具,您可以選擇直接下載整包程序包,或是僅下載所需要的工具程序包。接下來我們所要示范的幾個工具,都隸屬于處理程序類別的管理工具(Process Utilities)。此類別的工具大約有16個,我們僅示范其中的3個。
Sysinternals Utilities官方下載網址:

在Process Explorer小工具界面中,可以做到許多在“任務管理員”中所無法做到的管理操作。比如說,您可以從“Process”下拉選單或從任一執行程序,按下鼠標右鍵來選擇可執行的功能,其中暫停執行中的程序功能(Suspend)、重新啟動執行程序,以及從在線檢視該執行程序是否可能為病毒等等,都是相當實用的管理功能。
至于設置程序的優先級或親和性,也同樣可以在此完成設置。
以暫停執行中的Chrome程序為例,此時狀態便會顯示為“Suspend”,這時候您可以再嘗試去操作暫停中的Chrome瀏覽器,便會發現它將處于靜止狀態完全動彈不得,不過這并不會影響其它應用程序的正常運行。
當您開啟“System Information”的頁面,可能會感覺它與系統內置的“任務管理員”界面很像,您同樣可以監測到整體摘要信息、CPU、內存、磁盤與網絡I/O、GPU等性能信息。其中GPU性能在“任務管理員”中是沒有提供的。
若從“GPU”性能監測中可以在引擎(Engines)選取頁面中,可看到用以計算與監測GPU的使用率。
而當提到關于GPU(Graphics Processing Unit)的使用,想想看,若是在沒有GPU支持的情況下,主機CPU就必須處理所有系統與繪圖的處理作業,如此一來CPU的負載可能會爆沖,尤其是在目前強調4K解析與4D、5D等等的動畫應用之下。
為此,若有顯示界面的GPU便可以幫我們的計算機,分擔調大部分的繪圖處理作業,這樣一來CPU肯定可以更專心地處理更多屬于系統面的復雜運算任務。
若是您覺得系統所內置的“任務管理員”,其內存的監測工具有些少,而想要使用更進階的監測工具,不妨可以參考RamMap這個輔助工具。
在RamMap的窗口中,首先可以從“Use Counts”頁面中,監測到不同屬性類別內存的分配狀況,包括了驅動程序鎖定、核心堆棧、分頁場以及對應檔等,進一步您可以切換到處理程序、優先權摘要、物理分頁以及文件摘要等頁面中來查看詳細信息。
開啟“Physical Pages”的物理分頁配置監測,將可以清楚監測到每個不同處理程序,以及相對應的程序屬性類別,所占用的物理內存地址。這種監測方式很適合一些低級語言撰寫時的偵錯。
前面我們曾經提及過有一些性能的問題,是和系統啟動時所自動執行的應用程序有關,主要原因是從系統部署的最初至今,許多IT人員早已經在不知不覺中,安裝了許多應用程序而沒有移除,其中Windows Server根據統計又以代理程序(Agent)居多。
想要知道究竟還有多少程序會在開機時啟動,登錄時啟動或是某些應用程序執行時啟動,建議您不妨通過一個名為Autoruns的輔助工具,來進行全面監測與管理。
而如圖4所示便是Autoruns的管理界面,您可以從不同的頁簽中管理不同類型的自動執行程序。
這包括了開機執行(Boot Execute)、登錄啟動(Logon)、任務計劃器(Scheduled Tasks)以及隨附在IE瀏覽器而執行的組件等等。在上述范例中我們便可以在“Internet Explorer”頁簽,來將不需要的IE附加組件進行移除,例如我們將Microsoft OneDrive for Business的相關附加組件,在按下鼠標右鍵后點擊“Delete”。完成移除后,當再次開啟IE瀏覽器時,便可以在“管理附加組件”窗口中看到該組件確實已經被移除而非停用了。

圖4 Autoruns管理界面
針對Windows Server 2012 R2系統性能的優化,不管調整的目標是操作系統本身,還是IIS網站應用程序、Hyper-v虛擬化服務或是其它附加的Microsoft應用程序服務,其調整的方法除了可以通過本文所介紹的幾款內置工具,以及由官方所免費提供的簡易工具之外,實際上還可以通過更完整的解決方案,那就是SCOM(System Center Operations Manager)管理工具,來同時集中監視大量的Windows Server/Client、Linux OS等跨平臺系統與應用程序,并且做到實時預警的主動通知功能,甚至于還能夠通過預先配置好的Script,來達到自動修復問題的機制。當然,您仍可以去評估更多的第三方監測工具,或是讓雙方的監測工具在服務端進行集成,如此便可以部署出分布式監測且集中化報告的大型管理架構,以符合現今許多全球化IT營運與多元異質系統的信息環境的管理需求。