本文參考
https://jingyan.baidu.com/article/a3761b2bdfa24b1576f9aa8e.html
https://www.cnblogs.com/luo-mao/p/5872374.html
https://wenku.baidu.com/view/68e03e5e910ef12d2bf9e706.html
測試關注點:一般操作系統性能主要涉及到的指標:處理器使用情況、內存占有量、磁盤I/0操作以及網絡流量等。
Performance Monitor本身也是一個進程,運行起來也要占用一定的系統資源。所以你看到的資源的使用量應該比實際的要稍微高一點。這個工具在幫助管理員判斷系統性能瓶頸時非常有用。舉個列子來說,今天有個用戶抱怨說他們項目組的服務器(這是一台虛擬機)運行起來非常慢,但也不知道具體問題出在什么地方。任務管理器里顯示CPU和內存的使用量都不算高,但服務器的相應就是非常慢。打開Performance Monitor,讓其運行一段時間后(因為參考平均值會比較准確),發現average disk queue的值比較高,這就說明物理服務器的硬盤負荷太重,I/O操作的速度跟不上系統的要求。關掉虛擬機,將其轉移到另一台硬盤負載比較小的主機上,再打開虛擬機。問題就解決了。
一、遠程連接到Windows服務器,使用windows系統自帶工具進行收集性能數據
1、Windows服務器中自帶的性能監控工具叫做Performance Monitor,在開始-運行中輸入‘Perfmon.msc’,然后回車即可運行。通過界面,控制面板\所有控制面板項\管理工具\性能監視器也能打開
打開后,頁面展示
2、添加計數器
性能>數據收集器集>用戶定義[右擊]>新增‘數據收集器集’>手動創建高級>下一步
勾選創建數據日志>性能計數器>【下一步】
點擊“添加”→選擇計數器
點擊選中的可用計數器>【添加】>【確定】
【確定】>【下一步】
選擇目錄后,點擊【完成】
查看新增的計數器,輸出地方為日志輸出地址
3、選擇日志數據源格式
選擇用戶定義下的數據收集器集>右鍵屬性>性能計數器,日志格式選擇“逗號分隔”(即csv格式)
4、開始啟動數據采集,選擇用戶定義下的數據收集器集>右鍵屬性>開始
此時,輸出有地址了
5、用EXCEL將數據轉換為折線圖,並分析性能情況
二、分析性能情況
(1)內存泄露判斷
●虛擬內存字節數(VirtualBytes)應該遠大於工作集字節數(Workingset),如果兩者變化規律相反,比如說工作集增長較快,虛擬內存增長較少,則可能說明出現了內存泄露的情況。
●對於Workingset、Private Bytes、Available bytes這些計數器,如果在測試期間內數值持續增長,而且測試停止后位置在高水平,則也說明存在內存泄露。
●Windows資源監控中,如果Process\PrivateBytes計數器和Process\WorkingSet計數器的值在長時間內持續升高,同時Memory\Available
bytes計數器的值持續降低,則很可能存在內存泄漏。
(2)CPU使用情況
●一般平均不要超過70%,最大不要超過90%(好:70% 、壞:85%、 很差:90%)
(3)tps(每秒處理事務的數量,在SOAPUI中進行統計)
●一般在10-100,不同應用程序具體值不同
幾個常用參數的參考值: CPU: % Processor Time:表示CPU的使用率,如果值大於80表示CPU的處理調度能力偏低。 硬盤: % Disk Time:表示硬盤的I/O操作的頻率(繁忙時間),如果值大於80表示硬盤I/O調度能力偏低。 Average Disk Queue Length:表示硬盤I/O操作等待隊列的長度,如果值大於2表示硬盤I/O調度能力偏低。 內存 Pages/Sec:表示系統對虛擬內存每秒鍾的訪問次數,如果值大於20表示有內存方面的問題。(有可能是物理內存偏低,也有可能是虛擬內存沒有配置正確。一般情況下虛擬內存應為物理內存的1.5-2倍) Committed Bytes and Available Bytes:Committed Bytes表示虛擬內存的大小,Available Bytes表示剩余可用內存的大小。正常情況下,Available Bytes減少,pages(頁面數)應該增加,提供頁面交換。
如果Available Bytes的值很小表示物理內存偏低。當關閉一些應用以后,Committed Bytes應該減少,Available Bytes應該增加。因為關閉的進程釋放了之前占用的內存資源。如果相應的值沒有發生變化,那么該進程就可能造成了內存泄漏。 Cache Bytes:表示系統緩存的大小。如果值大於4M表示物理內存偏低。
三、關於計數器的選擇
perfmon的計數器主要分四種:處理器性能計數器、內存性能計數器、磁盤性能計數器以及網絡性能計數器。
以下為監控服務器常用的計數器:
常用的性能對象與指標 |
||
性能對象 |
計數器 |
提供的信息 |
Processor |
% Idle Time |
% Idle Time 是處理器在采樣期間空閑的時間的百分比 |
Processor |
% Processor Time |
% Processor Time 指處理器用來執行非閑置線程時間的百分比。計算方法是,測量范例間隔內非閑置線程活動的時間,用范例間隔減去該值。這個計數器是處理器活動的主要說明器,顯示在范例間隔時所觀察的繁忙時間平均百分比。 |
Processor |
% User Time |
% User Time 指處理器處於用戶模式的時間百分比。用戶模式是為應用程序、環境分系統和整數分系統設計的有限處理模式。 |
Memory |
Available Bytes |
Available Bytes顯示出當前空閑的物理內存總量。當這個數值變小時,Windows開始頻繁地調用磁盤頁面文件。如果這個數值很小,例如小於5 MB,系統會將大部分時間消耗在操作頁面文件上。 |
Memory |
% Committed Bytes in Use |
% Committed Bytes In Use 是 Memory: Committed Bytes 與Memory: Commit Limit之間的比值。(Committed memory指如果需要寫入磁盤時已在分頁文件中保留空間的處於使用中的物理內存。Commit Limit是由分頁文件的大小而決定的。如果擴大了分頁文件,該比例就會減小)。這個計數器只顯示當前百分比;而不是一個平均值。 |
Memory |
Page Faults/sec |
Page Faults/sec是指處理器處理錯誤頁的綜合速率。用錯誤頁數/秒來計算。當處理器請求一個不在其工作集(在物理內存中的空間)內的代碼或數據時出現的頁錯誤。這個計數器包括硬錯誤(那些需要磁盤訪問的)和軟錯誤(在物理內存的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續操作。但是,硬錯誤可以導致明顯的拖延。這個計數器顯示用上兩個實例中觀察到的值之間的差除以實例間隔的持續時間所得的值。 |
Network Interface |
Bytes Total/sec |
Bytes Total/sec是發送和接收字節的速率,包括幀字符在內。 |
Network Interface |
Packets/sec |
Packets/sec為發送和接收數據包的速率。 |
Physical Disk |
% Busy Time |
% Busy Time指磁盤驅動器忙於為讀或寫入請求提供服務所用的時間的百分比。 |
Physical Disk |
Avg. Disk Queue Length |
Avg. Disk Queue Length 指讀取和寫入請求(為所選磁盤在實例間隔中列隊的)的平均數。 |
Physical Disk |
Current Disk Queue Length |
Current Disk Queue Length指在收集操作數據時在磁盤上未完成的請求的數目。它包括在快照內存時正在為其提供服務中的請求。這是一個即時長度而非一定間隔時間的平均值。多主軸磁盤設備可以一次有多個請求操作,但是其它同時發生的請求為等候服務。這個計數器可能會反映一個暫時的高或低的列隊長度,但是如果在磁盤驅動器存在持續負載,可能值會總是很高。請求等待時間與這個列隊的長度減去磁盤上的主軸成正比。這個差值應小於2才能保持良好的性能。 |
Logical Disk |
% Free Space |
% Free Space 是所選定的邏輯磁盤驅動器上總的可用空閑空間的百分比。 |
Logical Disk |
Free Megabytes |
可用的 MB 顯示磁盤驅動器上尚未分配的空間。 |
以下為監控進程常用的計數器:
Process對象的主要指標 |
||
性能對象 |
計數器 |
提供的信息 |
Process |
% Privileged Time |
% Privileged Time 是在特權模式下處理線程執行代碼所花時間的百分比。當調用 Windows 系統服務時,此服務經常在特權模式運行,以便獲取對系統專有數據的訪問。在用戶模式執行的線程無法訪問這些數據。對系統的調用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或間隔。 |
Process |
% Processor Time |
% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬件間隔和陷阱條件所執行的代碼。 |
Process |
% User Time |
% User Time 指處理線程用於執行使用用戶模式的代碼的時間的百分比。應用程序、環境分系統和集合分系統是以用戶模式執行的。Windows 的可執行程序、內核和設備驅動程序不會被以用戶模式執行的代碼損壞。 |
Process |
Creating Process ID value |
Creating Process ID value 指創建該進程的父進程號。 |
Process |
Elapsed Time |
該進程運行的總時間(用秒計算)。 |
Process |
Handle Count |
由這個處理現在打開的句柄總數。這個數字等於這個處理中每個線程當前打開的句柄的總數。 |
Process |
ID Process |
ID Process 指這個處理的特別的識別符。ID Process 號可重復使用,所以這些 ID Process 號只能在一個處理的壽命期內識別那個處理。 |
Process |
IO Data Bytes/sec |
處理從 I/O 操作讀取/寫入字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Data Operations/sec |
本處理進行讀取/寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Other Bytes/sec |
處理給不包括數據的 I/O 操作(如控制操作)字節的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Other Operations/sec |
本處理進行非讀取/寫入 I/O 操作的速率。例如,控制性能。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Read Bytes/sec |
處理從 I/O 操作讀取字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Read Operations/sec |
本處理進行讀取 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
IO Write Bytes/sec |
處理從 I/O 操作寫入字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備。 |
Process |
IO Write Operations/sec |
本處理進行寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。 |
Process |
Page Faults/sec |
Page Faults/sec 指在這個進程中執行線程造成的頁面錯誤出現的速度。當線程引用了不在主內存工作集中的虛擬內存頁即會出現 Page Fault。如果它在備用表中(即已經在主內存中)或另一個共享頁的處理正在使用它,就會引起無法從磁盤中獲取頁。 |
Process |
Page File Bytes |
Page File Bytes 指這個處理在 Paging file 中使用的最大字節數。Paging File 用於存儲不包含在其他文件中的由處理使用的內存頁。Paging File 由所有處理共享,並且 Paging File 空間不足會防止其他處理分配內存。 |
Process |
Page File Bytes Peak |
Page File Bytes Peak 指這個處理在 Paging files 中使用的最大數量的字節。 |
Process |
Pool Nonpaged Bytes |
Pool Nonpaged Bytes 指在非分頁池中的字節數,非分頁池是指系統內存(操作系統使用的物理內存)中可供對象(指那些在不處於使用時不可以寫入磁盤上而且只要分派過就必須保留在物理內存中的對象)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。 |
Process |
Pool Paged Bytes |
Pool Paged Bytes 指在分頁池中的字節數,分頁池是系統內存(操作系統使用的物理內存)中可供對象(在不處於使用時可以寫入磁盤的)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。 |
Process |
Priority Base |
這次處理的當前基本優先權。在一個處理中的線程可以根據處理的基本優先權提高或降低自己的基本優先權。 |
Process |
Private Bytes |
Private Bytes 指這個處理不能與其他處理共享的、已分配的當前字節數。 |
Process |
Thread Count |
在這次處理中正在活動的線程數目。指令是在一台處理器中基本的執行單位,線程是指執行指令的對象。每個運行處理至少有一個線程。 |
Process |
Virtual Bytes |
Virtual Bytes 指處理使用的虛擬地址空間的以字節數顯示的當前大小。使用虛擬地址空間不一定是指對磁盤或主內存頁的相應的使用。虛擬空間是有限的,可能會限制處理加載數據庫的能力。 |
Process |
Virtual Bytes Peak |
Virtual Bytes Peak 指在任何時間內該處理使用的虛擬地址空間字節的最大數。 |
Process |
Working Set |
Working Set 指這個處理的 Working Set 中的當前字節數。Working Set 是在處理中被線程最近觸到的那個內存頁集。如果計算機上的可用內存處於閾值以上,即使頁不在使用中,也會留在一個處理的 Working Set中。當可用內存降到閾值以下,將從 Working Set 中刪除頁。如果需要頁時,它會在離開主內存前軟故障返回到 Working Set 中。 |
Process |
Working Set Peak |
Working Set Peak 指在任何時間這個在處理的 Working Set 的最大字節數。
|