性能測試常見的指標(一)


 

性能測試最基本要考慮以下幾點:

1、時間特性,主要指的是軟件產品的事物響應時間(用戶發出請求到收到應答的這段時間)

2、資源利用率,包括:cpu、內存、網絡、硬盤、虛擬內存(如Java虛擬機)

3、服務器可靠性,指服務器能在相對高負載情況下持續的運行

4、可配置優化性,指服務器配置優化、業務邏輯優化、代碼優化等

 

性能指標:

1、響應時間

響應時間是最能反應服務器性能的指標之一,也是用戶最關心的業務體驗。比如登錄某個商城網站時,只消耗1s鍾。在進行性能測試時,是通過對事務響應時間(Transaction Response Time)來分析服務器的響應速度。

 

(一般響應時間在3s內,用戶會感覺比較滿意。在3s~8s之間用戶勉強能接受,大於8s用戶就可能無法接受,從而刷新頁面或者離開,僅供參考)

2、吞吐量

吞吐量表示單位時間內能夠完成的事務數量,因此也被稱為每秒事務數(Transaction Per Second),計算方式是完成的事務數除以時間。

3、服務器資源占用

服務器資源占是指在負載情況下,系統的資源利用率。資源占用越低,說明系統越優秀。例如,cpu的占用率、內存使用率、查詢Cache命令率、磁盤I/O讀寫速率等。

 

CPU常用計數器:

計數器

計數器分析

%Processor Time

如果該值持續超過95%,表明瓶頸是cpu

Processor Queue Length

指待處理隊列中的線程數,如果在處理器隊列中總是有兩個以上的線程則通常表示處理器堵塞,處理器瓶頸會導致該值持續大於2。此外,跟蹤計算機的服務器工作隊列將顯示當前長度的Server Work Queues\Queue Length,隊列長度持續大於4則表示可能出現處理器擁塞。

%User Time

表示消耗CPU的數據庫操作,如排序、執行aggregate functions等。如果該值很高,可考慮增加索引,盡量使用簡單的表連接、水平分割大表格等方法來降低該值。

%Privileged Time

此計數器是特定時間的值,指(CPU內核時間)在特權模式下處理線程執行代碼所花時間的百分比,如果該參數的值和“Physical Disk”參數值一直很高,則表明I/O有問題。可考慮更換磁盤系統。

%DPC Time

網卡CPU的占用率,該值越低越好。如果這個值大於50%並且Processor%Processor Time非常高,說明提供的網絡已經受CPU影響無法飽和工作

 

 

 

內存常用計數器:

計數器

計數器分析

Available Mbytes

可用物理內存數。如果Available Mbytes的值很小,則說明計算機上總的內存可能不足,或某程序沒有釋放內存。

Page/sec

表明由於硬件頁面錯誤而從磁盤取出的頁面數,或由於頁面錯誤而從磁盤取出的頁面數,或由於頁面錯誤而寫入磁盤以釋放內存空間的頁面數。一般如果Page/sec持續高於幾百,那么應該進一步研究交換活動,有可能需要增加內存,以減少換頁的需求。Page/sec的值很大,不一定表明內存有問題,而可能是運行使用內存映射文件的程序所致。

Page read/sec

指頁的硬故障,是Page/sec的子集,為了解析對內存的引用,必須讀取頁文件的次數。該數值越低越好,大於5時表示磁盤讀而不是緩沖讀。

Page Faults/sec

指每秒鍾軟件頁面失效的數目,而Page/sec只表明數據不能在指定內存中立即使用。

Cache Bytes

文件系統緩存(File System Cache),默認情況下為50%的可用物理內存,如果懷疑有內存泄露,請監視Memory \Available BytesProcess\working set Process\Handle Count,如果懷疑是內存的進程Process\Private Bytes\Process\Working set Process\Handle Count,如果懷疑是內核模式進程導致了泄露,則還應該監視Memory\pool Nonpaged BytesMemory\pool Nonpaged AllocsProcessprocess_name\Pool Nonpaged Bytes

Pages/sec

每秒鍾檢索的頁數,該數字應少於每秒1

Committed Bytes

以字節表示的確認虛擬內存,確認內存磁盤頁面文件上保留了空間的物理內存。每個物理磁盤上可以有一個或一個以上的頁面文件。這個計數器只顯示上一回觀察到的值;它不是一個平均值。其實就是指有多少虛擬內存正在被使用,虛擬內存是占用硬盤空間的內存,和物理內存無關。

 

 

物理磁盤常用計數器:

計數器

計數器分析

%Disk Time

指所選磁盤驅動器為讀或寫入請求提供服務所用時間的百分比。如果三個計數器都比較大,那么磁盤不是瓶頸。如果只有%Disk Time比較大,另外兩個都比較適中,則硬盤可能會是瓶頸。若數值持續超過80%,則可能的內存泄露。

Avg.Disk Queue Length

它指的是當前磁盤的隊列長度。通俗點來解釋就是:計數器反映的磁盤完成請求所用的時間,較高的值表明磁盤控制器由於失敗而不斷重試該磁盤。這些故障會增加平均磁盤傳送時間。

Average Disk Read /

Write Queue Length

指讀取(寫入)請求(隊列)的平均數

Disk Reads(Writes)/sec

物理磁盤上每秒磁盤讀/寫的次數,兩者相加,應小於磁盤設備最大容量

Average Disk sec/Read

指以秒計算的在此盤上讀取數據所需的平均時間

Average Disk sec/Transfer

指以秒計算的在此盤上寫入數據所需的平均時間。一般來說,該值小於15ms最佳,15~30ms為良好,30~60ms為可以接受,超過60ms則需要考慮更換磁盤或磁盤的RAID方式了

Bytes Total/sec

發送和接收字節的速率,包括幀字符在內。判斷網絡連接速度是否是瓶頸,可以用該計數器的值和目前網絡的帶寬進行比較。

 

 

線程常用計數器:

計數器

計數器分析

Context Switch/sec

如果決定要增加線程字節池的大小,應該同時監視實例化inetinfo dllhost 進程這兩個計數器。增加線程可能會增加上下文切換次數,這樣性能不會上升,反而會下降。如果多個實例的上、下文切換值非常高,就應該減小線程字節池。

 

進程常用計數器:

計數器

計數器分析

Process/ %Processor Time

被處理器消耗的處理器時間數量。如果服務器專用於SQL Server,則可接受的最大上限是80%~85%

Page Faults/sec

將進程產生的頁故障與系統產生的相比較,以判斷這個進程對系統頁故障產生的影響

Working set

處理線程最近使用的內存頁,反映了每個進程使用的內存的數量,如果服務器有足夠的空閑內存,頁就會被留在內存中,當自由內存少於一個特定的閾值時,頁就會被消除內存。

Process/Private Bytes

指進程所分配的無法與其他進程共享的當前字節數量,該計數器主要用來判斷進程在性能測試過程中有無內存泄露。我們可以重點監控inetinfo進程的Private Bytes,如果在性能測試過程中,該進程Private Bytes計數器的值不斷增加,或是性能測試停止后一段時間,該進程的Private Bytes仍然持續較高水平,則說明應用存在內存泄露。

 

服務緩沖常用計數器:

計數器

計數器分析

File Cache Hits

文件緩存命中的具體值

File Cache Hits %

全部緩存請求中,緩存命中次數所占的比例,反映了IIS的文件緩存設置的工作情況。對於一個大部分是靜態網組成的網站,該值應該保持在80%左右。

File Cache Flushes

自服務器啟動之后文件緩存刷新的次數,如果刷新太慢,會浪費內存;如果刷新太快,緩存中的對象就會被頻繁的丟棄再重新生成,起不到緩存的作用,通過將File Cache Hits除以File Cache Flushes 可以得出緩存命中率對緩存清空率的比率。通過觀察這兩個值,可以得到一個適當的刷新值

Connection Refused

該數值越低越好,高數值表明網絡適配器或處理器存在瓶頸。

 

 

網絡常用計數器:

計數器

計數器分析

Bytes Total/sec

發送和接收字節的速度,包括幀字符在內,判斷網絡連接速度是否為瓶頸,可以用該計數器的值和目前網絡的帶寬相除,結果應該小於50%

 

Apache常用計數器:

計數器

計數器分析

Apache CPU Usage apache

服務器CPU的占用率

Kbytes Sent/sec

服務器每秒發送的字節數

Hits/sec

Apache 服務每秒的點擊率

#Busy Workers

Apache 服務占用率

#Idle Workers

Apache 服務空閑率

 

Mysql 常用計數器:

計數器

計數器分析

Threads_connected

表示當前有多少個客戶連接該Mysql服務器,連接數是否過多,網絡是否存在問題,它是動態變化的。當Threads_connected ==max_connections時,數據庫系統就不能提供更多的連接數了,這時,如果程序還想新建連接線程,數據庫系統就會拒絕,如果程序沒做太多的錯誤處理,就會出現報錯信息。

Threads_running

如果數據庫超負荷了,將會得到一個正在(查詢的語句持續)增長的數值。這個值也可以小於預先設定的值。這個值在很短的時間內超過限定值是沒有問題的,如果超過預設值時且5s內沒有回落,就要同時監視其他的一些值。

Aborted_clients

客戶端被異常中斷的數值(因為連接到Mysql服務器的客戶端沒有正常地斷開或關閉)。對於一些應用程序是沒有影響的,但對於另一些應用程序可能要跟蹤該值,因此異常中斷連接可能表明一些應用程序有問題

Questions

每秒獲得的查詢數量。也可以是全部查詢的數量,可以根據輸入不同的命令得到你想要的不同的值。

Handler_*

如果想監視底層(low-level)數據庫負載,這些值是值得去跟蹤的。如果Handler_read_rnd_next值與正常值相差懸殊,可能是優化或索引出問題了,Handler_rollback表明事務被回滾的查詢數量。

Opened_tables

指表緩存沒有命中的數量。如果該值很大,就需要增加table_cache的數值。

Select_full_join

沒有主鍵(key)聯合(join)的執行,該值可能是零。這是捕獲開發錯誤的好方法,因為這樣的查詢有可能降低系統的性能。

Select_scan

執行全表搜索查詢的數量,如果發現該值持續增長,說明需要優化,缺乏必要的索引或其他問題。

Select_queries

超過該值(--long-query-time)的查詢數量,或沒有使用索引查詢數量。對於全部查詢會有小的沖突。如果該值增長,則表明系統有性能問題。

Threads_created

該值一般較低。較高的值可能意味着需要增加thread_cache的數值,或遇到了持續增加的連接,表明存在潛在的問題。

Pending normal aio reads

該值是innodb io 請求查詢的大小(size)。如果該值超出了10~20的范圍,可能存在一些瓶頸。

 

 

總結:

1、硬件上的性能瓶頸:

一般指的是CPU、內存、磁盤讀寫等的瓶頸,為服務器硬件瓶頸。

2、應用軟件上的性能瓶頸:

一般指的是服務器操作系統瓶頸(參數配置)、數據庫瓶頸(參數配置)、web服務器瓶頸(參數配置)、中間件瓶頸(參數配置)等

3、應用程序上的性能瓶頸:

一般指的是開發人員,開發出來的應用程序(如sql語句、數據庫設計、業務邏輯、算法等)。

4、操作系統上的性能瓶頸:

一般指的是Windowslinux等操作系統,如出現物理內存不足時,或虛擬內存設置不合理(虛擬內存設置不合理,會導致虛擬內存的交換率大大降低,從而導致行為的響應時間大大增加,可以認為在操作系統上出現了性能瓶頸)。

5、網絡設備上的性能瓶頸:

一般指的是防火牆、動態負載均衡器、交換機等設備。

性能瓶頸原因定位十分復雜,需抽絲剝繭逐一排除,以上信息僅供參考。


免責聲明!

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



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