天天看點

性能測試(并發負載壓力)測試分析-簡要篇

分析原則:

• 具體問題具體分析(這是由于不同的應用系統,不同的測試目的,不同的性能關注點)

• 查找瓶頸時按以下順序,由易到難。

伺服器硬體瓶頸-〉網絡瓶頸(對區域網路,可以不考慮)-〉伺服器作業系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,資料庫,web伺服器等)-〉應用瓶頸(SQL語句、資料庫設計、業務邏輯、算法等)

注:以上過程并不是每個分析中都需要的,要根據測試目的和要求來确定分析的深度。對一些要求低的,我們分析到應用系統在将來大的負載壓力(并發使用者數、資料量)下,系統的硬體瓶頸在哪兒就夠了。

• 分段排除法 很有效

分析的資訊來源:

•1 根據場景運作過程中的錯誤提示資訊

•2 根據測試結果收集到的監控名額資料

一.錯誤提示分析

分析執行個體:

1 •Error: Failed to connect to server "10.10.10.30:8080": [10060] Connection

•Error: timed out Error: Server "10.10.10.30" has shut down the connection prematurely

分析:

•A、應用服務死掉。

(小使用者時:程式上的問題。程式上處理資料庫的問題)

•B、應用服務沒有死

(應用服務參數設定問題)

例:在許多用戶端連接配接Weblogic應用伺服器被拒絕,而在伺服器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接配接時收到connection refused消息,說明應提高該值,每次增加25%

•C、資料庫的連接配接

(1、在應用服務的性能參數可能太小了 2、資料庫啟動的最大連接配接數(跟硬體的記憶體有關))

2Error: Page download timeout (120 seconds) has expired

分析:可能是以下原因造成

•A、應用服務參數設定太大導緻伺服器的瓶頸

•B、頁面中圖檔太多

•C、在程式處理表的時候檢查字段太大多

二.監控名額資料分析

1.最大并發使用者數:

應用系統在目前環境(硬體環境、網絡環境、軟體環境(參數配置))下能承受的最大并發使用者數。

在方案運作中,如果出現了大于3個使用者的業務操作失敗,或出現了伺服器shutdown的情況,則說明在目前環境下,系統承受不了目前并發使用者的負載壓力,那麼最大并發使用者數就是前一個沒有出現這種現象的并發使用者數。

如果測得的最大并發使用者數到達了性能要求,且各伺服器資源情況良好,業務操作響應時間也達到了使用者要求,那麼OK。否則,再根據各伺服器的資源情況和業務操作響應時間進一步分析原因所在。

2.業務操作響應時間:

• 分析方案運作情況應從平均事務響應時間圖和事務性能摘要圖開始。使用“事務性能摘要”圖,可以确定在方案執行期間響應時間過長的事務。

• 細分事務并分析每個頁面元件的性能。檢視過長的事務響應時間是由哪些頁面元件引起的?問題是否與網絡或伺服器有關?

• 如果伺服器耗時過長,請使用相應的伺服器圖确定有問題的伺服器度量并查明伺服器性能下降的原因。如果網絡耗時過長,請使用“網絡螢幕”圖确定導緻性能瓶頸的網絡問題

3.伺服器資源監控名額:

記憶體:

1 UNIX資源監控中名額記憶體頁交換速率(Paging rate),如果該值偶爾走高,表明當時有線程競争記憶體。如果持續很高,則記憶體可能是瓶頸。也可能是記憶體通路命中率低。

2 Windows資源監控中,如果Process\Private Bytes計數器和Process\Working Set計數器的值在長時間内持續升高,同時Memory\Available bytes計數器的值持續降低,則很可能存在記憶體洩漏。

記憶體資源成為系統性能的瓶頸的征兆:

很高的換頁率(high pageout rate);

程序進入不活動狀态;

交換區所有磁盤的活動次數可高;

可高的全局系統CPU使用率;

記憶體不夠出錯(out of memory errors)

處理器:

1 UNIX資源監控(Windows作業系統同理)中名額CPU占用率(CPU utilization),如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。如果伺服器專用于SQL Server,可接受的最大上限是80-85%

合理使用的範圍在60%至70%。

2 Windows資源監控中,如果System\Processor Queue Length大于2,而處理器使用率(Processor Time)一直很低,則存在着處理器阻塞。

CPU資源成為系統性能的瓶頸的征兆:

很慢的響應時間(slow response time)

CPU空閑時間為零(zero percent idle CPU)

過高的使用者占用CPU時間(high percent user CPU)

過高的系統占用CPU時間(high percent system CPU)

長時間的有很長的運作程序隊列(large run queue size sustained over time)

磁盤I/O:

1 UNIX資源監控(Windows作業系統同理)中名額磁盤交換率(Disk rate),如果該參數值一直很高,表明I/O有問題。可考慮更換更快的硬碟系統。

2 Windows資源監控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操作速率很低,則可能存在磁盤瓶徑。

I/O資源成為系統性能的瓶頸的征兆 :

過高的磁盤使用率(high disk utilization)

太長的磁盤等待隊列(large disk queue length)

等待磁盤I/O的時間所占的百分率太高(large percentage of time waiting for disk I/O)

太高的實體I/O速率:large physical I/O rate(not sufficient in itself)

過低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))

太長的運作程序隊列,但CPU卻空閑(large run queue with idle CPU)

4.資料庫伺服器:

SQL Server資料庫:

1 SQLServer資源監控中名額緩存點選率(Cache Hit Ratio),該值越高越好。如果持續低于80%,應考慮增加記憶體。

2 如果Full Scans/sec(全表掃描/秒)計數器顯示的值比1或2高,則應分析你的查詢以确定是否确實需要全表掃描,以及SQL查詢是否可以被優化。

3 Number of Deadlocks/sec(死鎖的數量/秒):死鎖對應用程式的可伸縮性非常有害,并且會導緻惡劣的使用者體驗。該計數器的值必須為0。

4 Lock Requests/sec(鎖請求/秒),通過優化查詢來減少讀取次數,可以減少該計數器的值。

Oracle資料庫:

1 如果自由記憶體接近于0而且庫快存或資料字典快存的命中率小于0.90,那麼需要增加SHARED_POOL_SIZE的大小。

快存(共享SQL區)和資料字典快存的命中率:

select(sum(pins-reloads))/sum(pins) from v$librarycache;

select(sum(gets-getmisses))/sum(gets) from v$rowcache;

自由記憶體: select * from v$sgastat where name=’free memory’;

2 如果資料的緩存命中率小于0.90,那麼需要加大DB_BLOCK_BUFFERS參數的值(機關:塊)。

緩沖區高速緩存命中率:

select name,value from v$sysstat where name in ('db block gets’,

'consistent gets','physical reads') ;

Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))

3 如果日志緩沖區申請的值較大,則應加大LOG_BUFFER參數的值。

日志緩沖區的申請情況 :

select name,value from v$sysstat where name = 'redo log space requests' ;

4 如果記憶體排序命中率小于0.95,則應加大SORT_AREA_SIZE以避免磁盤排序 。

記憶體排序命中率 :

select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name='sorts (disk)' and b.name='sorts (memory)'

注:上述SQL Server和Oracle資料庫分析,隻是一些簡單、基本的分析,特别是Oracle資料庫的分析和優化,是一門專門的技術,進一步的分析可查相關資料。

說明:

以上隻是個人的體會和部分資料的整理,并