【整理】監視和調整硬件性能(上)


   通過使用 Microsoft Windows 中內置的性能計數器,可以監視性能以判斷設備需求。進行更改之后,可使用監視功能判斷更改是否達到了預期的效果或者是否需要進一步的更改。

 

       此主題介紹了可以用來監視下列硬件組件的計數器,並包括了每個組件的建議值和其他調整策略。

監視內存(上)
監視處理器容量 (上)
監視多處理器系統(上)
監視網絡容量和帶寬 (下)
監視和優化硬盤(下)

 

 

文章列表
       監視和調整硬件性能(上)
       監視和調整硬件性能(下)

     推薦閱讀:技術人員,為什么會苦逼

 

 

監視內存
       解決內存不足的問題之后,IIS 上將獲得最大的性能改善。在作出任何有關更改硬件配置的決定之前,應首選排除內存問題。應首先監視內存以驗證服務器是否有足夠的內存,然后再繼續處理服務器環境其他部分的問題。內存不足引起的問題常常會表現為系統的其他部分的問題。對於電子商務站點、具有許多內容的站點,以及流量非常大的站點,內存更大一點特別有益。

 

       可以使用系統監視器判斷服務器上的當前內存量是否滿足需要。系統監視器以圖形方式顯示計數器讀數隨時間的變化。

 

       監視下面的計數器來判斷是否存在與內存有關的性能瓶頸:

計數器 監視
Memory\Available Bytes 試圖保留至少 10% 的可用內存以供高峰時間使用。
Memory\Page Faults/sec

Memory\Pages Input/sec

Memory\Page Reads/sec

Memory\Transition Faults/sec

如果進程請求內存中的某個頁面而系統無法在請求的位置找到它,就會產生頁錯誤。如果該頁在內存中的其他地方,那么該錯誤叫做軟頁錯誤(由 Transition Faults/sec 度量)。如果該頁必須從磁盤中檢索,那么該錯誤就叫作硬頁錯誤。大多數處理器可以處理大量的軟錯誤而不會造成任何后果。然而,硬錯誤會造成嚴重的延遲。

Page Faults/sec 是處理器處理硬頁錯誤和軟頁錯誤的總體速率。Pages Input/sec 是為解決硬頁錯誤而從磁盤讀取的頁的總數。Page Reads/sec 是為解決硬頁錯誤而讀取磁盤的次數。Pages Input/sec 將大於等於 Page Reads/sec,並可以使您很好地了解硬頁錯誤率。如果這些數字較低,則服務器響應請求的速度可能很快。如果它們較高,可能是因為您為緩存分配的內存太多,而沒有為系統的其他操作保留足夠的內存。可能需要提高服務器的 RAM 量,雖然減少緩存大小也是一個有效辦法。

Memory\Cache Bytes 顯示文件系統的大小。默認情況下,緩存被設置為最多可以使用 50% 的可用物理內存。由於 IIS 會自動在內存不足的情況下減少緩存,因此要確保監視此計數器的趨勢。
WWW service cache\File Cache Flushes

WWW service cache\File Cache Hits

WWW service cache\File Cache %

這些計數器描述了用戶模式文件緩存。文件緩存基本上是一個文件名或者文件內容緩存。如果用戶請求一個文件,IIS 就會搜索文件緩存,如果它位於緩存中,就返回該文件。如果 IIS 在緩存中找不到該文件,它將從硬盤中讀取並返回該文件,從而導致硬頁錯誤。

 

File Cache Flushes 表示了 IIS 從萬維網發布服務 (WWW 服務)緩存中清除條目的次數。如果文件已經更改或者如果在 30 秒內沒有訪問文件,將清除條目。如果該計數器值較高,IIS 就用沒有被訪問的文件填充緩存,隨后再將這些文件清空。

File Cache Hits 是 IIS 在緩存中找到文件的次數。

 

File Cache % 是緩存命中率。這是 IIS 在緩存中找到請求的文件的次數百分比。如果緩存命中率較低(例如,70%),您可能需要考慮圍繞能輕易在文件緩存中找到的少量的“熱門”信息重新設計站點,從而改善性能。

Process\Page File Bytes

Process\Page File Bytes Peak

Paging File\% Usage

Paging File\% Usage Peak

這些計數器反映了在使用中的頁面文件實例的數量。頁面文件越大,系統提交給它的內存越多。Windows Server 2003 家族成員在系統驅動器上創建頁面文件。可以在每個邏輯磁盤上創建頁面文件,並可更改現有文件的大小。事實上,通過跨多個單獨的物理驅動器對頁面文件進行條帶化,可以改善頁面文件的性能(即,它所使用的驅動器不包含站點的內容或日志文件)。記住,系統驅動器上的頁面文件至少應是物理內存大小的兩倍,這樣,系統便可以在系統意外地鎖定或關閉的情況下將 RAM 中的全部內容寫入磁盤。
Memory\Pool Paged Bytes

Memory\Pool Non-paged Bytes

Process\Virtual Bytes (W3wp.exe)

Process\Virtual Bytes (Inetinfo.exe)

Process\Working Set (W3wp.exe)

Process\Working Set (Inetinfo.exe)

Pool Paged BytesPool Non-paged Bytes監視服務器上的所有進程的池空間。

Virtual Bytes 計數器既可以通過 Inetinfo.exe 進程,也可以通過在服務器上實例化的 W3wp.exe 進程(來監視 IIS 直接保留的虛擬地址空間的量。

Working Set 計數器計量每個進程使用的內存頁面的數量。一定要監視服務器上的 W3wp.exe 的所有實例的計數器;否則,您就不能獲得 IIS 使用的虛擬內存的准確讀數。系統的內存池保留了應用程序和操作系統創建和使用的對象。內存池的內容只有在特權模式下才可以訪問。即,只有操作系統的內核才能直接使用內存池;而用戶進程不能直接使用。在運行 IIS 6.0 的服務器上,為連接提供服務的線程與該服務使用的其他對象(如文件句柄和套接字)一起存儲在非頁面緩沖池中。

 

除了添加更多的 RAM 外,還可以使用下面的過程來提高內存性能。

    • 改善數據組織。
    • 使用磁盤鏡像或帶區。
    • 用托管代碼(ASP.NET)或 Internet 服務器 API (ISAPI) 應用程序替換通用網關接口 (CGI) 應用程序。
    • 增大頁面文件。
    • 消除不必要的功能。
    • 改變文件系統緩存與 IIS 工作集之間的平衡。

監視處理器容量

       由於用戶要求網站有快速的響應時間以及這些站點能提供不斷增加的動態生成的內容量,快速和有效的處理器使用應放在首位。當一個或多個進程消耗了大多數處理器時間時,就會發生瓶頸。這會迫使已准備執行的線程在隊列中等待處理器時間。添加其他硬件,無論是內存、硬盤還是網絡連接,以試圖克服處理器瓶頸並非有效辦法,並可能會引發更大的問題。

 

監視下列計數器以判斷是否存在與處理器容量相關的性能瓶頸:

計數器 監視
System\Processor Queue Length 顯示隊列中等待執行的並由系統上的所有處理器共享的線程的數量。如果此計數器有兩個或兩個以上的持續不變的線程,則說明服務器出現瓶頸。
Processor\%Processor Time 處理器瓶頸的特征在於這樣的情況,其中,% Processor Time 數字較高,而網絡適配卡和磁盤 I/O 低於容量值。在多處理器計算機上,請檢查 % Processor Time 計數器,以查找處理器和處理時間之間的任何不平衡現象。
Thread (svchost/host number)\Context Switches/sec

System\Context Switches/sec

如果您決定增加任何線程池的大小,則應監視此計數器。提高線程的數量可能會將上下文開關的數量提高到某一點,造成性能降低而不是提高。如果每秒鍾上下文開關達到一萬或更多,則說明該計數器的值較大。如果看到該數字有這么大,則請考慮降低線程池的大小。可能很難平衡線程與由連接和請求計量的總體性能。每次調整線程時,都應進行總體性能監視,以了解性能是提高還是降低了。

要判斷是否應調整線程計數,應將線程數量和進程中的每個線程的處理器時間與總處理器時間進行比較。如果線程持續處於忙狀態,但沒有完全使用處理器時間,則可以通過產生更多的線程來改善性能。然而,如果所有線程都忙,並且處理器接近於它們的最大容量,最好在多台服務器之間分布負載而不是提高線程的數量。

Processor\Interrupts/sec

Processor\% DPC Time

可以使用這些計數器判斷處理器花費在中斷和延遲的過程調用上的時間長短。這兩個因素可能是造成處理器上負載的另一個原因。客戶端請求可能是中斷和延遲的過程調用的主要原因。一些新的網絡適配卡包括中斷調解,它會在中斷的級別太高時將中斷堆積在緩沖區中。

監視多處理器系統   

       IIS 可以在多處理器計算機上縮放,但可伸縮性可能會由於網站和 Web 應用程序的拙劣設計而削弱。Web 園和進程回收可以幫助最大限度地減少與不完善的應用程序相關的性能問題。然而,一定要監視和測試多處理器計算機上的網站和 Web 應用程序的可伸縮性。在更改多處理器計算機的設置之前,應排除系統的所有其他方面的瓶頸。

 

       還應考慮向特定的處理器指派進程(叫做處理器關系),以更好地管理服務器處理請求和應用程序處理的方式。此外,在更改多處理器計算機的設置之前,應在 IIS 中啟用服務質量功能。服務質量功能用於限制特定網站或 Web 應用程序使用的資源,以確保系統的其他部分有足夠的資源使用。

 

       監視下列計數器以判斷是否存在與多處理器計算機相關的性能瓶頸:

計數器 監視
Processor\% Processor Time (_Total) 通過將采樣間隔內所有處理器的平均非空閑時間相加並將總和除以處理器的數量,即可衡量計算機中所有處理器的處理器活動。例如,如果平均起來,所有處理器在半個采樣間隔內處於忙狀態,則顯示 50%。如果半數處理器在整個間隔內處於忙狀態,而其他的處理器處於空閑狀態,也顯示 50%。
Thread\% Processor Time (_Total/_Total) 衡量線程的處理器時間量。

 

管理多處理器系統中的處理器關系


       設置處理器關系意味着向特定的處理器指派特定的進程或應用程序。控制處理器關系可以通過減少線程從一個處理器移動到另一個處理器時處理器緩存刷新的次數來提高性能。對於專用的文件服務器,這可能是一種好的選擇。然而,請注意,為程序分配特定的處理器可能會不允許其他程序線程遷移到最不繁忙的處理器。

 

       如果要為一個處理器指派特定的進程或程序,以犧牲其他進程為代價提高其性能,則請在 IIS 配置數據庫中更改 SMPProcessorAffinityMask 屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM