在論壇混了多日,發現越來越多的性能測試工程師基本上都能夠掌握利用 測試工具來作負載壓力測試,但多數人對怎樣去分析工具收集到的測試結果感到無從下手,下面我就把個人工作中的體會和收集到的有關資料整理出來,希望能對大家分析測試結果有所幫助。
分析原則:
• 具體問題具體分析(這是由于不同的 應用系統,不同的測試目的,不同的性能關注點)
• 查找瓶頸時按以下順序,由易到難。
服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器 操作系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫, 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、應用服務死掉。
。ㄐ∮脩魰r:程序上的問題。程序上處理數據庫的問題)
•B、應用服務沒有死
。☉梅⻊諈翟O置問題)
例:在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%
•C、數據庫的連接
(1、在應用服務的性能參數可能太小了 2、數據庫啟動的最大連接數(跟硬件的內存有關))
2 Error: Page download timeout (120 seconds) has expired
分析:可能是以下原因造成
•A、應用服務參數設置太大導致服務器的瓶頸
•B、頁面中圖片太多
•C、在程序處理表的時候檢查字段太大多
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數據庫的分析和優化,是一門專門的技術,進一步的分析可查相關資料。
文章來源于領測軟件測試網 http://www.kjueaiud.com/