天天看點

性能測試常見的名額性能測試最基本要考慮以下幾點:

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

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 Bytes、Process\working set 和Process\Handle Count,如果懷疑是記憶體的程序Process\Private Bytes\Process\Working set 和Process\Handle Count,如果懷疑是核心模式程序導緻了洩露,則還應該監視Memory\pool Nonpaged Bytes、Memory\pool Nonpaged Allocs和Process(process_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、作業系統上的性能瓶頸:

一般指的是Windows、linux等作業系統,如出現實體記憶體不足時,或虛拟記憶體設定不合理(虛拟記憶體設定不合理,會導緻虛拟記憶體的交換率大大降低,進而導緻行為的響應時間大大增加,可以認為在作業系統上出現了性能瓶頸)。

5、網絡裝置上的性能瓶頸:

一般指的是防火牆、動态負載均衡器、交換機等裝置。

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