分析原則:具體問(wèn)題具體分析(這是由于不同的應(yīng)用系統(tǒng),不同的
測(cè)試目的,不同的性能關(guān)注點(diǎn))
查找瓶頸時(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ā)用戶數(shù)、數(shù)據(jù)量)下,系統(tǒng)的硬件瓶頸在哪兒就夠了。
分段排除法 很有效
分析的信息來(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 “payment.baihe.com″: [10060] Connection
Error: timed out Error: Server “user.baihe.com″ has shut down the connection prematurely
分析:
A、應(yīng)用服務(wù)死掉。
(小用戶時(shí):程序上的問(wèn)題。程序上處理數(shù)據(jù)庫(kù)的問(wèn)題)
B、應(yīng)用服務(wù)沒有死
(應(yīng)用服務(wù)參數(shù)設(shè)置問(wèn)題)
例:在許多客戶端連接Weblogic應(yīng)用服務(wù)器被拒絕,而在服務(wù)器端沒有錯(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ā)用戶數(shù):
應(yīng)用系統(tǒng)在當(dāng)前環(huán)境(硬件環(huán)境、網(wǎng)絡(luò)環(huán)境、軟件環(huán)境(參數(shù)配置))下能承受的最大并發(fā)用戶數(shù)。
在方案運(yùn)行中,如果出現(xiàn)了大于3個(gè)用戶的業(yè)務(wù)操作失敗,或出現(xiàn)了服務(wù)器shutdown的情況,則說(shuō)明在當(dāng)前環(huán)境下,系統(tǒng)承受不了當(dāng)前并發(fā)用戶的負(fù)載壓力,那么最大并發(fā)用戶數(shù)就是前一個(gè)沒有出現(xiàn)這種現(xiàn)象的并發(fā)用戶數(shù)。
如果測(cè)得的最大并發(fā)用戶數(shù)到達(dá)了性能要求,且各服務(wù)器資源情況良好,業(yè)務(wù)操作響應(yīng)時(shí)間也達(dá)到了用戶要求,那么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ù)性能摘要圖開始。使用“事務(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)題
2-5-10原則:簡(jiǎn)單說(shuō),就是當(dāng)用戶能夠在2秒以內(nèi)得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)很快;當(dāng)用戶在2-5秒之間得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)速度還可以;當(dāng)用戶在5-10秒以內(nèi)得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)速度很慢,但是還可以接受;而當(dāng)用戶在超過(guò)10秒后仍然無(wú)法得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)糟透了,或者認(rèn)為系統(tǒng)已經(jīng)失去響應(yīng),而選擇離開這個(gè)Web站點(diǎn),或者發(fā)起第二次請(qǐng)求
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ū)所有磁盤的活動(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ù)器專用于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ò)高的用戶占用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)
磁盤I/O:
1)UNIX資源監(jiān)控(Windows操作系統(tǒng)同理)中指標(biāo)磁盤交換率(Disk rate),如果該參數(shù)值一直很高,表明I/O有問(wèn)題。可考慮更換更快的硬盤系統(tǒng)。
2)Windows資源監(jiān)控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁(yè)面讀取操作速率很低,則可能存在磁盤瓶徑。
I/O資源成為系統(tǒng)性能的瓶頸的征兆 :
過(guò)高的磁盤利用率(high disk utilization)
太長(zhǎng)的磁盤等待隊(duì)列(large disk queue length)
等待磁盤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)分析你的查詢以確定是否確實(shí)需要全表掃描,以及SQL查詢是否可以被優(yōu)化。
3)Number of Deadlocks/sec(死鎖的數(shù)量/秒):死鎖對(duì)應(yīng)用程序的可伸縮性非常有害,并且會(huì)導(dǎo)致惡劣的用戶體驗(yàn)。該計(jì)數(shù)器的值必須為0.
4)Lock Requests/sec(鎖請(qǐng)求/秒),通過(guò)優(yōu)化查詢來(lái)減少讀取次數(shù),可以減少該計(jì)數(shù)器的值。
Oracle數(shù)據(jù)庫(kù):
1)如果自由內(nèi)存接近于0而且?guī)炜齑婊驍?shù)據(jù)字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
2)如果數(shù)據(jù)的緩存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS參數(shù)的值(單位:塊)。
3)如果日志緩沖區(qū)申請(qǐng)的值較大,則應(yīng)加大LOG_BUFFER參數(shù)的值。
4)如果內(nèi)存排序命中率小于0.95,則應(yīng)加大SORT_AREA_SIZE以避免磁盤排序 .