問題描述:LoadRunner作為業界最流行的性能測試工具,應用已經十分廣泛。LoadRunner如何分析性能數據,這個是每一個做性能測試人員都非常關心的話題。但此話題受具體業務和環境的影響不太好回答,所以縮小一下范圍。如何使用LoadRunner進行資源占用率(CPU,內存,硬盤)的分析?
精彩答案:
情況比較復雜,有興趣的話可以就這個問題寫本很厚的書。
1. 系統分類
1.1. windows
1.2. unix/linux
2. 核心分類
1.1. 單核CPU
1.2. 多核CPU
3. 應用分類
3.1. JAVA應用
3.2. DotNet應用
3.3. 其他應用
4. 磁盤分類
5. 平台分類
5.1. 中間件平台
5.2. 數據庫平台
5.3. 其他中間件平台
6. 綜合以上這些內容分析,相信會有很多排列組合。由於參數組合及應用的復雜性,說性能的高低標准實在很難一概而論。只能就事論事,依照情況分析。
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,以觀察內存行為,並監視您認為可能在洩露內存的進程的ProcessPrivate Bytes、ProcessWorking Set 和ProcessHandle Count。如果您懷疑是內核模式進程導致了洩露,則還應該監視MemoryPool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和Process(process_name) Pool Nonpaged Bytes。
Pages per second :每秒鐘檢索的頁數。該數字應少於每秒一頁。
Process:
%Processor Time: 被處理器消耗的處理器時間數量。如果服務器 style="COLOR: #000000" href="http://server.it168.com/" target=_blank>服務器專用於sql server,可接受的最大上限是80-85%
Page Faults/sec:將進程產生的頁故障與系統產生的相比較,以判斷這個進程對系統頁故障產生的影響。
Work set: 處理線程最近使用的內存頁,反映了每一個進程使用的內存頁的數量。如果服務器有足夠的空閒內存,頁就會被留在工作集中,當自由內存少於一個特定的阈值時,頁就會被清除出工作集。
Inetinforivate Bytes:此進程所分配的無法與其它進程共享的當前字節數量。如果系統性能隨著時間而降低,則此計數器可以是內存洩漏的最佳指示器。
Processor:監視“處理器”和“系統”對象計數器可以提供關於處理器使用的有價值的信息,幫助您決定是否存在瓶頸。
%Processor Time:如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。
%User Time:表示耗費CPU的數據庫操作,如排序,執行aggregate functions等。如果該值很高,可考慮增加索引,盡量使用簡單的表聯接,水平分割大表格等方法來降低該值。
%Privileged Time:(CPU內核時間)是在特權模式下處理線程執行代碼所花時間的百分比。如果該參數值和"hysical 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 :為發送和接收字節的速率,包括幀字符在內。判斷網絡連接速度是否是瓶頸,可以用該計數器的值和目前網絡的帶寬比較。