浅谈性能测试分析
性能測(cè)試工程師基本上都能夠掌握利用測(cè)試工具來(lái)作負(fù)載、壓力測(cè)試,但多數(shù)人對(duì)怎樣去分析工具收集到的測(cè)試結(jié)果感到無(wú)從下手,下面我就把個(gè)人工作中的體會(huì)和收集到的有關(guān)資料整理出來(lái),希望能對(duì)大家分析測(cè)試結(jié)果有所幫助。?分析原則:
1.?具體問(wèn)題具體分析(這是由于不同的應(yīng)用系統(tǒng),不同的測(cè)試目的,不同的性能關(guān)注點(diǎn))
2.?查找瓶頸時(shí)按以下順序,由易到難。
????服務(wù)器硬件瓶頸-〉網(wǎng)絡(luò)瓶頸(對(duì)局域網(wǎng),可以不考慮)-〉服務(wù)器操作系統(tǒng)瓶頸(參數(shù)配置)-〉中間件瓶頸(參數(shù)配置,數(shù)據(jù)庫(kù),web服務(wù)器等)-〉應(yīng)用瓶頸(SQL語(yǔ)句、數(shù)據(jù)庫(kù)設(shè)計(jì)、業(yè)務(wù)邏輯、算法等)
????注:以上過(guò)程并不是每個(gè)分析中都需要的,要根據(jù)測(cè)試目的和要求來(lái)確定分析的深度。對(duì)一些要求低的,我們分析到應(yīng)用系統(tǒng)在將來(lái)大的負(fù)載壓力(并發(fā)用戶(hù)數(shù)、數(shù)據(jù)量)下,系統(tǒng)的硬件瓶頸在哪兒就夠了。
3?分段排除法?很有效
分析的信息來(lái)源:
1?根據(jù)場(chǎng)景運(yùn)行過(guò)程中的錯(cuò)誤提示信息
2?根據(jù)測(cè)試結(jié)果收集到的監(jiān)控指標(biāo)數(shù)據(jù)
一.錯(cuò)誤提示分析
分析實(shí)例:
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、應(yīng)用服務(wù)死掉。
(小用戶(hù)時(shí):程序上的問(wèn)題。程序上處理數(shù)據(jù)庫(kù)的問(wèn)題)
?B、應(yīng)用服務(wù)沒(méi)有死
(應(yīng)用服務(wù)參數(shù)設(shè)置問(wèn)題)
????例:在許多客戶(hù)端連接Weblogic應(yīng)用服務(wù)器被拒絕,而在服務(wù)器端沒(méi)有錯(cuò)誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設(shè)得過(guò)低。如果連接時(shí)收到connection refused消息,說(shuō)明應(yīng)提高該值,每次增加25%
?C、數(shù)據(jù)庫(kù)的連接
(1、在應(yīng)用服務(wù)的性能參數(shù)可能太小了?2、數(shù)據(jù)庫(kù)啟動(dòng)的最大連接數(shù)(跟硬件的內(nèi)存有關(guān)))
2 Error: Page download timeout (120 seconds) has expired
分析:可能是以下原因造成
?A、應(yīng)用服務(wù)參數(shù)設(shè)置太大導(dǎo)致服務(wù)器的瓶頸
?B、頁(yè)面中圖片太多
?C、在程序處理表的時(shí)候檢查字段太大多
二.監(jiān)控指標(biāo)數(shù)據(jù)分析
1.最大并發(fā)用戶(hù)數(shù):
應(yīng)用系統(tǒng)在當(dāng)前環(huán)境(硬件環(huán)境、網(wǎng)絡(luò)環(huán)境、軟件環(huán)境(參數(shù)配置))下能承受的最大并發(fā)用戶(hù)數(shù)。
????在方案運(yùn)行中,如果出現(xiàn)了大于3個(gè)用
戶(hù)的業(yè)務(wù)操作失敗,或出現(xiàn)了服務(wù)器shutdown的情況,則說(shuō)明在當(dāng)前環(huán)境下,系統(tǒng)承受不了當(dāng)前并發(fā)用戶(hù)的負(fù)載壓力,那么最大并發(fā)用戶(hù)數(shù)就是前一個(gè)沒(méi)有出現(xiàn)這種現(xiàn)象的并發(fā)用戶(hù)數(shù)。
????如果測(cè)得的最大并發(fā)用戶(hù)數(shù)到達(dá)了性能要求,且各服務(wù)器資源情況良好,業(yè)務(wù)操作響應(yīng)時(shí)間也達(dá)到了用戶(hù)要求,那么OK。否則,再根據(jù)各服務(wù)器的資源情況和業(yè)務(wù)操作響應(yīng)時(shí)間進(jìn)一步分析原因所在。
2.業(yè)務(wù)操作響應(yīng)時(shí)間:
?????分析方案運(yùn)行情況應(yīng)從平均事務(wù)響應(yīng)時(shí)間圖和事務(wù)性能摘要圖開(kāi)始。使用“事務(wù)性能摘要”圖,可以確定在方案執(zhí)行期間響應(yīng)時(shí)間過(guò)長(zhǎng)的事務(wù)。
????細(xì)分事務(wù)并分析每個(gè)頁(yè)面組件的性能。查看過(guò)長(zhǎng)的事務(wù)響應(yīng)時(shí)間是由哪些頁(yè)面組件引起的?問(wèn)題是否與網(wǎng)絡(luò)或服務(wù)器有關(guān)?
??如果服務(wù)器耗時(shí)過(guò)長(zhǎng),請(qǐng)使用相應(yīng)的服務(wù)器圖確定有問(wèn)題的服務(wù)器度量并查明服務(wù)器性能下降的原因。如果網(wǎng)絡(luò)耗時(shí)過(guò)長(zhǎng),請(qǐng)使用“網(wǎng)絡(luò)監(jiān)視器”圖確定導(dǎo)致性能瓶頸的網(wǎng)絡(luò)問(wèn)題
3.服務(wù)器資源監(jiān)控指標(biāo):
內(nèi)存:
1 UNIX資源監(jiān)控中指標(biāo)內(nèi)存頁(yè)交換速率(Paging rate),如果該值偶爾走高,表明當(dāng)時(shí)有線程競(jìng)爭(zhēng)內(nèi)存。如果持續(xù)很高,則內(nèi)存可能是瓶頸。也可能是內(nèi)存訪問(wèn)命中率低。
2?Windows資源監(jiān)控中,如果Process/Private Bytes計(jì)數(shù)器和Process/Working Set計(jì)數(shù)器的值在長(zhǎng)時(shí)間內(nèi)持續(xù)升高,同時(shí)Memory/Available bytes計(jì)數(shù)器的值持續(xù)降低,則很可能存在內(nèi)存泄漏。
內(nèi)存資源成為系統(tǒng)性能的瓶頸的征兆:
很高的換頁(yè)率(high pageout rate);
進(jìn)程進(jìn)入不活動(dòng)狀態(tài);
交換區(qū)所有磁盤(pán)的活動(dòng)次數(shù)可高;
可高的全局系統(tǒng)CPU利用率;?
內(nèi)存不夠出錯(cuò)(out of memory errors)
處理器:
1 UNIX資源監(jiān)控(Windows操作系統(tǒng)同理)中指標(biāo)CPU占用率(CPU utilization),如果該值持續(xù)超過(guò)95%,表明瓶頸是CPU。可以考慮增加一個(gè)處理器或換一個(gè)更快的處理器。如果服務(wù)器專(zhuān)用于SQL Server,可接受的最大上限是80-85%?
合理使用的范圍在60%至70%。
2 Windows資源監(jiān)控中,如果System/Processor Queue Length大于2,而處理器利用率(Processor Time)一直很低,則存在著處理器阻塞。
CPU資源成為系統(tǒng)性能的瓶頸的征兆:?
很慢的響應(yīng)時(shí)間(slow response time)?
CPU空閑時(shí)間為零(zero percent idle CPU)?
過(guò)高的用戶(hù)占用CPU時(shí)間(high percent user CPU)?
過(guò)高的系統(tǒng)占用CPU時(shí)間(high percent system CPU)?
長(zhǎng)時(shí)間的有很長(zhǎng)的運(yùn)行進(jìn)程隊(duì)列(large run queue size sustained over time)
磁盤(pán)I/O:
1 UNIX資源監(jiān)控(Windows操作系統(tǒng)同理)中指標(biāo)磁盤(pán)交換率(Disk rate),如果該參數(shù)值一直很高,表明I/O有問(wèn)題。可考慮更換更快的硬盤(pán)系統(tǒng)。
2 Windows資源監(jiān)控中,如果?Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁(yè)面讀取操作速率很低,則可能存在磁盤(pán)瓶徑。
I/O資源成為系統(tǒng)性能的瓶頸的征兆?:
過(guò)高的磁盤(pán)利用率(high disk utilization)?
太長(zhǎng)的磁盤(pán)等待隊(duì)列(large disk queue length)?
等待磁盤(pán)I/O的時(shí)間所占的百分率太高(large percentage of time waiting for disk I/O)?
太高的物理I/O速率:large physical I/O rate(not sufficient in itself)?
過(guò)低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))?
太長(zhǎng)的運(yùn)行進(jìn)程隊(duì)列,但CPU卻空閑(large run queue with idle CPU)
4.數(shù)據(jù)庫(kù)服務(wù)器:
SQL Server數(shù)據(jù)庫(kù):
1 SQLServer資源監(jiān)控中指標(biāo)緩存點(diǎn)擊率(Cache Hit Ratio),該值越高越好。如果持續(xù)低于80%,應(yīng)考慮增加內(nèi)存。
2?如果Full Scans/sec(全表掃描/秒)計(jì)數(shù)器顯示的值比1或2高,則應(yīng)分析你的查詢(xún)以確定是否確實(shí)需要全表掃描,以及SQL查詢(xún)是否可以被優(yōu)化。?
3 Number of Deadlocks/sec(死鎖的數(shù)量/秒):死鎖對(duì)應(yīng)用程序的可伸縮性非常有害,并且會(huì)導(dǎo)致惡劣的用戶(hù)體驗(yàn)。該計(jì)數(shù)器的值必須為0。
4 Lock Requests/sec(鎖請(qǐng)求/秒),通過(guò)優(yōu)化查詢(xún)來(lái)減少讀取次數(shù),可以減少該計(jì)數(shù)器的值。
Oracle數(shù)據(jù)庫(kù):
1?如果自由內(nèi)存接近于0而且?guī)炜齑婊驍?shù)據(jù)字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
快存(共享SQL區(qū))和數(shù)據(jù)字典快存的命中率:?
select(sum(pins-reloads))/sum(pins) from v$librarycache;?
select(sum(gets-getmisses))/sum(gets) from v$rowcache;?
自由內(nèi)存:?select * from v$sgastat where name=’free memory’;?
2?如果數(shù)據(jù)的緩存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS參數(shù)的值(單位:塊)。
緩沖區(qū)高速緩存命中率:
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?如果日志緩沖區(qū)申請(qǐng)的值較大,則應(yīng)加大LOG_BUFFER參數(shù)的值。
日志緩沖區(qū)的申請(qǐng)情況?:
select name,value from v$sysstat where name = ‘redo log space requests’ ;
4?如果內(nèi)存排序命中率小于0.95,則應(yīng)加大SORT_AREA_SIZE以避免磁盤(pán)排序?。
內(nèi)存排序命中率?:
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數(shù)據(jù)庫(kù)分析,只是一些簡(jiǎn)單、基本的分析,特別是Oracle數(shù)據(jù)庫(kù)的分析和優(yōu)化,是一門(mén)專(zhuān)門(mén)的技術(shù),進(jìn)一步的分析可查相關(guān)資料。
?
?
?性能測(cè)試的結(jié)果分析是性能測(cè)試的重中之重。在實(shí)際工作中,由于測(cè)試的結(jié)果分析比較復(fù)
雜、需要具備很多相關(guān)的專(zhuān)業(yè)知識(shí),因此常常會(huì)感覺(jué)拿到數(shù)據(jù)不知從何下手。這也是我學(xué)習(xí)性能
測(cè)試過(guò)程中感覺(jué)比較尷尬和棘手的事,為此我在研讀了《WEB性能測(cè)試實(shí)戰(zhàn)》后特作了以下筆
記,這里只是書(shū)中第4章WEB應(yīng)用程序性能分析的一
部分,貼出來(lái)希望和大家共同討論:
?
一:性能分析的基礎(chǔ)知識(shí):
1.幾個(gè)重要的性能指標(biāo):相應(yīng)時(shí)間、吞吐量、吞吐率、TPS(每秒鐘處理的交易數(shù))、點(diǎn)
擊率等。
?
2.系統(tǒng)的瓶頸分為兩類(lèi):網(wǎng)絡(luò)的和服務(wù)器的。服務(wù)器瓶頸主要涉及:應(yīng)用程序、WEB服務(wù)
器、數(shù)據(jù)庫(kù)服務(wù)器、操作系統(tǒng)四個(gè)方面。
?
3.常規(guī)、粗略的性能分析方法:
???當(dāng)增大系統(tǒng)的壓力(或增加并發(fā)用戶(hù)數(shù))時(shí),吞吐率和TPS的變化曲線呈大體一致,則系統(tǒng)
基本穩(wěn)定;若壓力增大時(shí),吞吐率的曲線增加到一定程度后出現(xiàn)變化緩慢,甚至平坦,很可能是
網(wǎng)絡(luò)出現(xiàn)帶寬瓶頸,同理若點(diǎn)擊率/TPS曲線出現(xiàn)變化緩慢或者平坦,說(shuō)明服務(wù)器開(kāi)始出現(xiàn)頸。
?
4.作者提出了如下的性能分析基本原則,此原則本人十分贊同:
??????????? ——由外而內(nèi)、由表及里、層層深入
????應(yīng)用此原則,分析步驟具體可以分為以下三步:
???第一步:將得到的響應(yīng)時(shí)間和用戶(hù)對(duì)性能的期望值比較確定是否存在瓶頸;
???第二步:比較Tn(網(wǎng)絡(luò)響應(yīng)時(shí)間)和Ts(服務(wù)器響應(yīng)時(shí)間)可以確定瓶頸發(fā)生在網(wǎng)絡(luò)還是服
務(wù)器;
???第三步:進(jìn)一步分析,確定更細(xì)組件的響應(yīng)時(shí)間,直到找出發(fā)生性能瓶頸的根本原因。
?
二:以WEB應(yīng)用程序?yàn)槔齺?lái)看下具體的分析方法:
1.用戶(hù)事務(wù)分析:
?
a.事務(wù)綜述圖(Transaction Summary ):以柱狀圖的形式表現(xiàn)了用戶(hù)事務(wù)執(zhí)行的成功與
失敗。通過(guò)分析成功與失敗的數(shù)據(jù)可以直接判斷出系統(tǒng)是否運(yùn)行正常。若失敗的事務(wù)非常多,則
說(shuō)明系統(tǒng)發(fā)生了瓶頸或者程序在執(zhí)行過(guò)程中發(fā)生了問(wèn)題。
?
b.事務(wù)平均響應(yīng)時(shí)間分析圖(Average Transaction Response Time):?該圖顯示在
測(cè)試場(chǎng)景運(yùn)行期間的每一秒內(nèi)事務(wù)執(zhí)行所用的平均時(shí)間,還顯示了測(cè)試場(chǎng)景運(yùn)行時(shí)間內(nèi)各個(gè)事務(wù)
的最大值、最小值和平均值。通過(guò)它可以分析系統(tǒng)的性能走向。若所有事務(wù)響應(yīng)時(shí)間基本成一條
曲線,則說(shuō)明系統(tǒng)性能基本穩(wěn)定;否則如果平均事務(wù)響應(yīng)時(shí)間逐漸變慢,說(shuō)明性能有下降趨勢(shì),
造成性能下降的原因有可能是由于內(nèi)存泄漏導(dǎo)致。
?
c.每秒通過(guò)事務(wù)數(shù)分析圖(Transaction per Second即TPS):顯示在場(chǎng)景運(yùn)行的每一
秒中,每個(gè)事?務(wù)通過(guò)、失敗以及停止的數(shù)量。通過(guò)它可以確定系統(tǒng)在任何給定時(shí)刻的實(shí)際事務(wù)
負(fù)載。若隨著測(cè)試的進(jìn)展,應(yīng)用系統(tǒng)在單位時(shí)間內(nèi)通過(guò)的事務(wù)數(shù)目在減少,則說(shuō)明服務(wù)器出現(xiàn)瓶
頸。
?
d.每秒通過(guò)事務(wù)總數(shù)分析圖(Total Transactions per Second):顯示場(chǎng)景運(yùn)行的
每一秒中,通過(guò)、失敗以及停止的事務(wù)總數(shù)。若在同等壓力下,曲線接近直線,則性能基本趨于
穩(wěn)定;若在單位時(shí)間內(nèi)通過(guò)的事務(wù)總量越來(lái)越少,即整體性能下降。原因可能是內(nèi)存泄漏或者程
序中的缺陷。
?
e.事務(wù)性能摘要圖(Transaction Performance Summary):顯示方案中所有事務(wù)的
最小、最大平均執(zhí)行時(shí)間,可以直接判斷響應(yīng)時(shí)間是否符合客戶(hù)要求(重點(diǎn)關(guān)注事務(wù)平均、最大
執(zhí)行時(shí)間)。
?
f.事務(wù)響應(yīng)時(shí)間與負(fù)載分析圖(Transaction Response Time Under load):通過(guò)
該圖可以看出在任一時(shí)間點(diǎn)事務(wù)響應(yīng)時(shí)間與用戶(hù)數(shù)目的關(guān)系,從而掌握系統(tǒng)在用戶(hù)并發(fā)方面的性
能數(shù)據(jù)。
?
g.事務(wù)響應(yīng)時(shí)間(百分比)圖(Transaction Response Time(percentile)):該
圖是根據(jù)測(cè)試結(jié)果進(jìn)行分析而得到的綜合分析圖。分析該圖應(yīng)從整體出發(fā),若可能事務(wù)的最大響
應(yīng)時(shí)間很長(zhǎng),但如果大多數(shù)事務(wù)具有可接受的響應(yīng)時(shí)間,則系統(tǒng)的性能是符合。
?
h.事務(wù)響應(yīng)時(shí)間分布情況圖(Transaction Response Time (Distribution)):該
圖顯示了測(cè)試過(guò)程中不同響應(yīng)時(shí)間的事務(wù)數(shù)量。若系統(tǒng)預(yù)先定義了相關(guān)事務(wù)可以接受的最小和最
大事務(wù)響應(yīng)時(shí)間,則可以使用此圖確定系統(tǒng)性能是否在接受范圍內(nèi)。
??????分析到這一步,只能大概判斷出瓶頸可能會(huì)出在那,要具體定位瓶頸還需要更深入
的分析。沒(méi)有貼圖,看起來(lái)有點(diǎn)費(fèi)勁,如果你對(duì)這些圖都比較了解,應(yīng)該是比較簡(jiǎn)單的.
轉(zhuǎn)載于:https://www.cnblogs.com/Darrenblog/p/winterwinner.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 以客户的名义,宏杉科技“存储七项式”律己
- 下一篇: 毕设项目 - 大数据+爬虫 疫情分析可视