有關性能測試結果的幾點分析原則
性能測試結果的分析原則:
具體問題具體分析(這是由于不同的應用系統(tǒng),不同的測試目的,不同的性能關注點)
查找瓶頸時按以下順序,由易到難。
服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器操作系統(tǒng)瓶頸(參數(shù)配置)-〉中間件瓶頸(參數(shù)配置,數(shù)據(jù)庫,web服務器等)-〉應用瓶頸(SQL語句、數(shù)據(jù)庫設計、業(yè)務邏輯、算法等)
注:以上過程并不是每個分析中都需要的,要根據(jù)測試目的和要求來確定分析的深度。對一些要求低的,我們分析到應用系統(tǒng)在將來大的負載壓力(并發(fā)用戶數(shù)、數(shù)據(jù)量)下,系統(tǒng)的硬件瓶頸在哪兒就夠了。
性能測試結果分析中,分段排除法 很有效
分析的信息來源:
1)根據(jù)場景運行過程中的錯誤提示信息
2)根據(jù)測試結果收集到的監(jiān)控指標數(shù)據(jù)
一.性能測試結果的錯誤提示分析
分析實例:
1)Error: Failed to connect to server “payment.baihe.com″: [10060] Connection
Error: timed out Error: Server “user.baihe.com″ has shut down the connection prematurely
分析:
A、應用服務死掉。
(小用戶時:程序上的問題。程序上處理數(shù)據(jù)庫的問題)
B、應用服務沒有死
(應用服務參數(shù)設置問題)
例:在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%
C、數(shù)據(jù)庫的連接
(1、在應用服務的性能參數(shù)可能太小了 2、數(shù)據(jù)庫啟動的***連接數(shù)(跟硬件的內存有關))
2)Error: Page download timeout (120 seconds) has expired
分析:可能是以下原因造成
A、應用服務參數(shù)設置太大導致服務器的瓶頸
B、頁面中圖片太多
C、在程序處理表的時候檢查字段太大多
二.性能測試結果的監(jiān)控指標數(shù)據(jù)分析
1.***并發(fā)用戶數(shù):
應用系統(tǒng)在當前環(huán)境(硬件環(huán)境、網絡環(huán)境、軟件環(huán)境(參數(shù)配置))下能承受的***并發(fā)用戶數(shù)。
在方案運行中,如果出現(xiàn)了大于3個用戶的業(yè)務操作失敗,或出現(xiàn)了服務器shutdown的情況,則說明在當前環(huán)境下,系統(tǒng)承受不了當前并發(fā)用戶的負載壓力,那么***并發(fā)用戶數(shù)就是前一個沒有出現(xiàn)這種現(xiàn)象的并發(fā)用戶數(shù)。
如果測得的***并發(fā)用戶數(shù)到達了性能要求,且各服務器資源情況良好,業(yè)務操作響應時間也達到了用戶要求,那么OK。否則,再根據(jù)各服務器的資源情況和業(yè)務操作響應時間進一步分析原因所在。
2.業(yè)務操作響應時間:
分析方案運行情況應從平均事務響應時間圖和事務性能摘要圖開始。使用“事務性能摘要”圖,可以確定在方案執(zhí)行期間響應時間過長的事務。
細分事務并分析每個頁面組件的性能。查看過長的事務響應時間是由哪些頁面組件引起的?問題是否與網絡或服務器有關?
如果服務器耗時過長,請使用相應的服務器圖確定有問題的服務器度量并查明服務器性能下降的原因。如果網絡耗時過長,請使用“網絡監(jiān)視器”圖確定導致性能瓶頸的網絡問題
2-5-10原則:簡單說,就是當用戶能夠在2秒以內得到響應時,會感覺系統(tǒng)的響應很快;當用戶在2-5秒之間得到響應時,會感覺系統(tǒng)的響應速度還可以;當用戶在5-10秒以內得到響應時,會感覺系統(tǒng)的響應速度很慢,但是還可以接受;而當用戶在超過10秒后仍然無法得到響應時,會感覺系統(tǒng)糟透了,或者認為系統(tǒng)已經失去響應,而選擇離開這個Web站點,或者發(fā)起第二次請求
3.服務器資源監(jiān)控指標:
內存:
1)UNIX資源監(jiān)控中指標內存頁交換速率(Paging rate),如果該值偶爾走高,表明當時有線程競爭內存。如果持續(xù)很高,則內存可能是瓶頸。也可能是內存訪問命中率低。
2)Windows資源監(jiān)控中,如果Process\Private Bytes計數(shù)器和Process\Working Set計數(shù)器的值在長時間內持續(xù)升高,同時Memory\Available bytes計數(shù)器的值持續(xù)降低,則很可能存在內存泄漏。
內存資源成為系統(tǒng)性能的瓶頸的征兆:
很高的換頁率(high pageout rate);
進程進入不活動狀態(tài);
交換區(qū)所有磁盤的活動次數(shù)可高;
可高的全局系統(tǒng)CPU利用率;
內存不夠出錯(out of memory errors)
處理器:
1)UNIX資源監(jiān)控(Windows操作系統(tǒng)同理)中指標CPU占用率(CPU utilization),如果該值持續(xù)超過95%,表明瓶頸是CPU??梢钥紤]增加一個處理器或換一個更快的處理器。如果服務器專用于SQL Server,可接受的***上限是80-85%
合理使用的范圍在60%至70%。
2)Windows資源監(jiān)控中,如果System\Processor Queue Length大于2,而處理器利用率(Processor Time)一直很低,則存在著處理器阻塞。
CPU資源成為系統(tǒng)性能的瓶頸的征兆:
很慢的響應時間(slow response time)
CPU空閑時間為零(zero percent idle CPU)
過高的用戶占用CPU時間(high percent user CPU)
過高的系統(tǒng)占用CPU時間(high percent system CPU)
長時間的有很長的運行進程隊列(large run queue size sustained over time)
磁盤I/O:
1)UNIX資源監(jiān)控(Windows操作系統(tǒng)同理)中指標磁盤交換率(Disk rate),如果該參數(shù)值一直很高,表明I/O有問題??煽紤]更換更快的硬盤系統(tǒng)。
2)Windows資源監(jiān)控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操作速率很低,則可能存在磁盤瓶徑。
I/O資源成為系統(tǒng)性能的瓶頸的征兆 :
過高的磁盤利用率(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.數(shù)據(jù)庫服務器:
SQL Server數(shù)據(jù)庫:
1)SQLServer資源監(jiān)控中指標緩存點擊率(Cache Hit Ratio),該值越高越好。如果持續(xù)低于80%,應考慮增加內存。
2)如果Full Scans/sec(全表掃描/秒)計數(shù)器顯示的值比1或2高,則應分析你的查詢以確定是否確實需要全表掃描,以及SQL查詢是否可以被優(yōu)化。
3)Number of Deadlocks/sec(死鎖的數(shù)量/秒):死鎖對應用程序的可伸縮性非常有害,并且會導致惡劣的用戶體驗。該計數(shù)器的值必須為0。
4)Lock Requests/sec(鎖請求/秒),通過優(yōu)化查詢來減少讀取次數(shù),可以減少該計數(shù)器的值。
Oracle數(shù)據(jù)庫:
1)如果自由內存接近于0而且?guī)炜齑婊驍?shù)據(jù)字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
2)如果數(shù)據(jù)的緩存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS參數(shù)的值(單位:塊)。
3)如果日志緩沖區(qū)申請的值較大,則應加大LOG_BUFFER參數(shù)的值。
4)如果內存排序命中率小于0.95,則應加大SORT_AREA_SIZE以避免磁盤排序 。
【編輯推薦】