LR 性能分析指標分析

Memory: 內存使用情況可能是系統性能中最重要的因素。如果系統“頁交換”頻繁,說明內存不足。“頁交換”是使用稱爲“頁面”的單位,將固定大小的代碼和數據塊從 RAM 移動到磁盤的過程,其目的是爲了釋放內存空間。儘管某些頁交換使 Windows 2000 能夠使用比實際更多的內存,也是可以接受的,但頻繁的頁交換將降低系統性能。減少頁交換將顯著提高系統響應速度。要監視內存不足的狀況,請從以下的對象計數器開始:
Available Mbytes:可用物理內存數. 如果Available Mbytes的值很小(4 MB 或更小),則說明計算機上總的內存可能不足,或某程序沒有釋放內存。
page/sec: 表明由於硬件頁面錯誤而從磁盤取出的頁面數,或由於頁面錯誤而寫入磁盤以釋放工作集空間的頁面數。一般如果pages/sec持續高於幾百,那麼您應該進一步研究頁交換活動。有可能需要增加內存,以減少換頁的需求(你可以把這個數字乘以4k就得到由此引起的硬盤數據流量)。Pages/sec 的值很大不一定表明內存有問題,而可能是運行使用內存映射文件的程序所致。
page read/sec:頁的硬故障,page/sec的子集,爲了解析對內存的引用,必須讀取頁文件的次數。閾值爲>5. 越低越好。大數值表示磁盤讀而不是緩存讀。
由於過多的頁交換要使用大量的硬盤空間,因此有可能將導致將頁交換內存不足與導致頁交換的磁盤瓶徑混淆。因此,在研究內存不足不太明顯的頁交換的原因時,您必須跟蹤如下的磁盤使用情況計數器和內存計數器:
Physical Disk\ % Disk Time
Physical Disk\ Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率並未降低,則內存不足。
要確定過多的頁交換對磁盤活動的影響,請將 Physical Disk\ Avg.Disk sec/Transfer 和 Memory\ Pages/sec 計數器的值增大數倍。如果這些計數器的計數結果超過了 0.1,那麼頁交換將花費百分之十以上的磁盤訪問時間。如果長時間發生這種情況,那麼您可能需要更多的內存。
Page Faults/sec:每秒軟性頁面失效的數目(包括有些可以直接在內存中滿足而有些需要從硬盤讀取)較page/sec只表明數據不能在內存的指定工作集中立即使用。
Cache Bytes:文件系統緩存(File System Cache),默認情況下爲50%的可用物理內存。如IIS5.0 運行內存不夠時,它會自動整理緩存。需要關注該計數器的趨勢變化
如果您懷疑有內存泄露,請監視 Memory\ Available Bytes 和 Memory\ Committed Bytes,以觀察內存行爲,並監視您認爲可能在泄露內存的進程的 Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您懷疑是內核模式進程導致了泄露,則還應該監視 Memory\Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。
Pages per second :每秒鐘檢索的頁數。該數字應少於每秒一頁。

Process:
%Processor Time: 被處理器消耗的處理器時間數量。如果服務器專用於sql server,可接受的最大上限是80-85%
Page Faults/sec:將進程產生的頁故障與系統產生的相比較,以判斷這個進程對系統頁故障產生的影響。
Work set: 處理線程最近使用的內存頁,反映了每一個進程使用的內存頁的數量。如果服務器有足夠的空閒內存,頁就會被留在工作集中,當自由內存少於一個特定的閾值時,頁就會被清除出工作集。
Inetinfo:Private Bytes:此進程所分配的無法與其它進程共享的當前字節數量。如果系統性能隨着時間而降低,則此計數器可以是內存泄漏的最佳指示器。

 

Processor:監視“處理器”和“系統”對象計數器可以提供關於處理器使用的有價值的信息,幫助您決定是否存在瓶頸。
%Processor Time:如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。
%User Time:表示耗費CPU的數據庫操作,如排序,執行aggregate functions等。如果該值很高,可考慮增加索引,儘量使用簡單的表聯接,水平分割大表格等方法來降低該值。
%Privileged Time:(CPU內核時間)是在特權模式下處理線程執行代碼所花時間的百分比。如果該參數值和"Physical Disk"參數值一直很高,表明I/O有問題。可考慮更換更快的硬盤系統。另外設置Tempdb in RAM,減低"max async IO","max lazy writer IO"等措施都會降低該值。
此外,跟蹤計算機的服務器工作隊列當前長度的 Server Work Queues\ Queue Length 計數器會顯示出處理器瓶頸。隊列長度持續大於 4 則表示可能出現處理器擁塞。此計數器是特定時間的值,而不是一段時間的平均值。
% DPC Time:越低越好。在多處理器系統中,如果這個值大於50%並且Processor:% Processor Time非常高,加入一個網卡可能會提高性能,提供的網絡已經不飽和。

Thread
ContextSwitches/sec: (實例化inetinfo 和dllhost 進程) 如果你決定要增加線程字節池的大小,你應該監視這三個計數器(包括上面的一個)。增加線程數可能會增加上下文切換次數,這樣性能不會上升反而會下降。如果十個實例的上下文切換值非常高,就應該減小線程字節池的大小。

Physical Disk:
%Disk Time %:指所選磁盤驅動器忙於爲讀或寫入請求提供服務所用的時間的百分比。如果三個計數器都比較大,那麼硬盤不是瓶頸。如果只有%Disk Time比較大,另外兩個都比較適中,硬盤可能會是瓶頸。在記錄該計數器之前,請在Windows 2000 的命令行窗口中運行diskperf -yD。若數值持續超過80%,則可能是內存泄漏。
Avg.Disk Queue Length:指讀取和寫入請求(爲所選磁盤在實例間隔中列隊的)的平均數。該值應不超過磁盤數的1.5~2 倍。要提高性能,可增加磁盤。注意:一個Raid Disk實際有多個磁盤。
Average Disk Read/Write Queue Length:指讀取(寫入)請求(列隊)的平均數。
Disk Reads(Writes)/s: 物理磁盤上每秒鐘磁盤讀、寫的次數。兩者相加,應小於磁盤設備最大容量。
Average Disksec/Read: 指以秒計算的在此盤上讀取數據的所需平均時間。
Average Disk sec/Transfer:指以秒計算的在此盤上寫入數據的所需平均時間。
Network Interface:
Bytes Total/sec :爲發送和接收字節的速率,包括幀字符在內。判斷網絡連接速度是否是瓶頸,可以用該計數器的值和目前網絡的帶寬比較

SQLServer性能計數器:
Access Methods(訪問方法) 用於監視訪問數據庫中的邏輯頁的方法。
. Full Scans/sec(全表掃描/秒) 每秒不受限的完全掃描數。可以是基本表掃描或全索引掃描。如果這個計數器顯示的值比1或2高,應該分析你的查詢以確定是否確實需要全表掃描,以及S Q L查詢是否可以被優化。
. Page splits/sec(頁分割/秒)由於數據更新操作引起的每秒頁分割的數量。
Buffer Manager(緩衝器管理器):監視 Microsoft SQL Server 如何使用: 內存存儲數據頁、內部數據結構和過程高速緩存;計數器在 SQL Server 從磁盤讀取數據庫頁和將數據庫頁寫入磁盤時監視物理 I/O。 監視 SQL Server 所使用的內存和計數器有助於確定: 是否由於缺少可用物理內存存儲高速緩存中經常訪問的數據而導致瓶頸存在。如果是這樣,SQL Server 必須從磁盤檢索數據。 是否可通過添加更多內存或使更多內存可用於數據高速緩存或 SQL Server 內部結構來提高查詢性能。
SQL Server 需要從磁盤讀取數據的頻率。與其它操作相比,例如內存訪問,物理 I/O 會耗費大量時間。儘可能減少物理 I/O 可以提高查詢性能。
.Page Reads/sec:每秒發出的物理數據庫頁讀取數。這一統計信息顯示的是在所有數據庫間的物理頁讀取總數。由於物理 I/O 的開銷大,可以通過使用更大的數據高速緩存、智能索引、更高效的查詢或者改變數據庫設計等方法,使開銷減到最小。
.Page Writes/sec (.寫的頁/秒) 每秒執行的物理數據庫寫的頁數。
.Buffer Cache Hit Ratio. 在“緩衝池”(Buffer Cache/Buffer Pool)中沒有被讀過的頁佔整個緩衝池中所有頁的比率。可在高速緩存中找到而不需要從磁盤中讀取的頁的百分比。這一比率是高速緩存命中總數除以自 SQL Server 實例啓動後對高速緩存的查找總數。經過很長時間後,這一比率的變化很小。由於從高速緩存中讀數據比從磁盤中讀數據的開銷要小得多,一般希望這一數值高一些。通常,可以通過增加 SQL Server 可用的內存數量來提高高速緩存命中率。計數器值依應用程序而定,但比率最好爲90% 或更高。增加內存直到這一數值持續高於90%,表示90% 以上的數據請求可以從數據緩衝區中獲得所需數據。
. Lazy Writes/sec(惰性寫/秒)惰性寫進程每秒寫的緩衝區的數量。值最好爲0。
Cache Manager(高速緩存管理器) 對象提供計數器,用於監視 Microsoft SQL Server 如何使用內存存儲對象,如存儲過程、特殊和準備好的 Transact-SQL 語句以及觸發器。
. Cache Hit Ratio(高速緩存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一個總體的比率。) 高速緩存命中次數和查找次數的比率。對於查看SQL Server高速緩存對於你的系統如何有效,這是一個非常好的計數器。如果這個值很低,持續低於80%,就需要增加更多的內存。
Latches(閂) 用於監視稱爲閂鎖的內部 SQL Server 資源鎖。監視閂鎖以明確用戶活動和資源使用情況,有助於查明性能瓶頸。
. Average Latch Wait Ti m e ( m s ) (平均閂等待時間(毫秒)) 一個SQL Server線程必須等待一個閂的平均時間,以毫秒爲單位。如果這個值很高,你可能正經歷嚴重的競爭問題。
. Latch Waits/sec (閂等待/秒) 在閂上每秒的等待數量。如果這個值很高,表明你正經歷對資源的大量競爭。
Locks(鎖) 提供有關個別資源類型上的 SQL Server 鎖的信息。鎖加在 SQL Server 資源上(如在一個事務中進行的行讀取或修改),以防止多個事務併發使用資源。例如,如果一個排它 (X) 鎖被一個事務加在某一表的某一行上,在這個鎖被釋放前,其它事務都不可以修改這一行。儘可能少使用鎖可提高併發性,從而改善性能。可以同時監視 Locks 對象的多個實例,每個實例代表一個資源類型上的一個鎖。
. Number of Deadlocks/sec(死鎖的數量/秒) 導致死鎖的鎖請求的數量
. Average Wait Time(ms) (平均等待時間(毫秒)) 線程等待某種類型的鎖的平均等待時間
. Lock Requests/sec(鎖請求/秒) 每秒鐘某種類型的鎖請求的數量。
Memory manager:用於監視總體的服務器內存使用情況,以估計用戶活動和資源使用,有助於查明性能瓶頸。監視 SQL Server 實例所使用的內存有助於確定:
是否由於缺少可用物理內存存儲高速緩存中經常訪問的數據而導致瓶頸存在。如果是這樣,SQL Server 必須從磁盤檢索數據。
是否可以通過添加更多內存或使更多內存可用於數據高速緩存或 SQL Server 內部結構來提高查詢性能。
Lock blocks:服務器上鎖定塊的數量,鎖是在頁、行或者表這樣的資源上。不希望看到一個增長的值。
Total server memory:sql server服務器當前正在使用的動態內存總量.

監視IIS需要的一些計數器
Internet Information Services Global:
File Cache Hits %、File CacheFlushes、File Cache Hits
File Cache Hits %是全部緩存請求中緩存命中次數所佔的比例,反映了IIS 的文件緩存設置的工作情況。對於一個大部分是靜態網頁組成的網站,該值應該保持在80%左右。而File Cache Hits是文件緩存命中的具體值,File CacheFlushes 是自服務器啓動之後文件緩存刷新次數,如果刷新太慢,會浪費內存;如果刷新太快,緩存中的對象會太頻繁的丟棄生成,起不到緩存的作用。通過比較File Cache Hits 和File Cache Flushes 可得出緩存命中率對緩存清空率的比率。通過觀察它兩個的值,可以得到一個適當的刷新值(參考IIS 的設置ObjectTTL 、MemCacheSize 、MaxCacheFileSize)
Web Service:
Bytes Total/sec:顯示Web服務器發送和接受的總字節數。低數值表明該IIS正在以較低的速度進行數據傳輸。
Connection Refused:數值越低越好。高數值表明網絡適配器或處理器存在瓶頸。
Not Found Errors:顯示由於被請求文件無法找到而無法由服務器滿足的請求數(HTTP狀態代碼404)

重貼
監視內存計數器
要監視內存不足的狀況,請從以下的對象計數器開始:
內存信息:
Memory\ Available Bytes
Memory\ Pages/sec
Memory\ Available Bytes
如果您懷疑有內存泄露,請監視 Memory\Available Bytes 和 Memory\ Committed Bytes,以觀察內存行爲,並監視您認爲可能在泄露內存的進程的 Process\ Private Bytes、Process\ Working Set 和Process\ Handle Count。如果您懷疑是內核模式進程導致了泄露,
則還應該監視 Memory\ Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。

CPU信息:
Processor\ % Processor Time 獲得處理器使用情況。
也可以選擇監視 Processor\ % User Time 和 % Privileged Time 以獲得詳細信息。
Server Work Queues\ Queue Length 計數器會顯示出處理器瓶頸。隊列長度持續大於 4 則表示可能出現處理器擁塞。
System\ Processor Queue Length 用於瓶頸檢測
通過使用 Process\ % Processor Time 和 Process\ Working Set
Process\ % Processor Time過程的所有線程在每個處理器上的處理器時間總和。

硬盤信息:
Physical Disk\ % Disk Time
Physical Disk\ Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率並未降低,則內存不足。
Physical Disk\ % Disk Time
Physical Disk\ Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue Length的值很高,則可能有磁盤瓶徑。但是,如果隊列長度增加的同時頁面讀取速率並未降低,則內存不足。
請觀察 Processor\ Interrupts/sec 計數器的值,該計數器測量來自輸入/輸出 (I/O) 設備的服務請求的速度。如果此計數器的值明顯增加,而系統活動沒有相應增加,則表明存在硬件問題。
Physical Disk\ Disk Reads/sec and Disk Writes/sec
Physical Disk\ Current Disk Queue Length
Physical Disk\ % Disk Time
LogicalDisk\ % Free Space
測試磁盤性能時,將性能數據記錄到另一個磁盤或計算機,以便這些數據不會干擾您正在測試的磁盤。
可能需要觀察的附加計數器包括 Physical Disk\ Avg.Disk sec/Transfer、Avg.Disk Bytes/Transfer,和 Disk Bytes/sec。
Avg.Disk sec/Transfer 計數器反映磁盤完成請求所用的時間。較高的值表明磁盤控制器由於失敗而不斷重試該磁盤。這些故障會增加平均磁盤傳送時間。對於大多數磁盤,較高的磁盤平均傳送時間是大於 0.3 秒。
也可以查看 Avg.Disk Bytes/Transfer 的值。值大於 20 KB 表示該磁盤驅動器通常運行良好;如果應用程序正在訪問磁盤,則會產生較低的值。例如,隨機訪問磁盤的應用程序會增加平均 Disk sec/Transfer 時間,因爲隨機傳送需要增加搜索時間。
Disk Bytes/sec 提供磁盤系統的吞吐率。
決定工作負載的平衡
要平衡網絡服務器上的負載,需要了解服務器磁盤驅動器的繁忙程度。使用 Physical Disk\ % Disk Time 計數器,該計數器顯示驅動器活動時間的百分比。如果 % Disk Time 較高(超過 90%),請檢查 Physical Disk\ Current Disk Queue Length 計數器以查看正在等待磁盤訪問的系統請求數量。等待 I/O 請求的數量應當保持在不大於組成物理磁盤的主軸數的 1.5 到 2 倍。

儘管廉價磁盤冗餘陣列 (RAID) 設備通常有多個主軸,大多數磁盤有一個主軸。硬件 RAID 設備在“系統監視器”中顯示爲一個物理磁盤;通過軟件創建的 RAID 設備顯示爲多個驅動器(實例)。可以監視每個物理驅動器(而不是 RAID)的 Physical Disk 計數器,也可以使用 _Total 實例來監視所有計算機驅動器的數據。

使用 Current Disk Queue Length 和 % Disk Time 計數器來檢測磁盤子系統的瓶頸。如果 Current Disk Queue Length 和 % Disk Time 的值始終較高,可以考慮升級磁盤驅動器或將某些文件移動到其他磁盤或服務器。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章