




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 可修改 歡送下載 精品 Word 可修改 歡送下載 精品 Word 可修改 歡送下載 精品 Word目錄 TOC o 1-3 h z u HYPERLINK l _Toc297915338 第一章 性能測(cè)試根底 PAGEREF _Toc297915338 h 2 HYPERLINK l _Toc297915339 1.1 性能測(cè)試工程師的標(biāo)準(zhǔn)及挑戰(zhàn) PAGEREF _Toc297915339 h 2 HYPERLINK l _Toc297915340 1.1.1 性能測(cè)試工程考評(píng)指標(biāo) PAGEREF _Toc297915340 h 2 HYPERLINK l _Toc297915341 1.
2、1.2 性能測(cè)試工程師的挑戰(zhàn) PAGEREF _Toc297915341 h 3 HYPERLINK l _Toc297915342 1.2 性能測(cè)試根底 PAGEREF _Toc297915342 h 5 HYPERLINK l _Toc297915343 1.2.1 性能 PAGEREF _Toc297915343 h 5 HYPERLINK l _Toc297915344 1.2.2 性能指標(biāo) PAGEREF _Toc297915344 h 16 HYPERLINK l _Toc297915345 1.2.3 性能分析及調(diào)優(yōu) PAGEREF _Toc297915345 h 17 HYPE
3、RLINK l _Toc297915346 1.2.4 單機(jī)軟件性能與網(wǎng)絡(luò)架構(gòu)軟件 PAGEREF _Toc297915346 h 22 HYPERLINK l _Toc297915347 1.2.5 性能測(cè)試的流程 PAGEREF _Toc297915347 h 23 HYPERLINK l _Toc297915348 1.2.6 性能測(cè)試的注意要點(diǎn) PAGEREF _Toc297915348 h 24 HYPERLINK l _Toc297915349 1.2.7 性能測(cè)試招聘要求 PAGEREF _Toc297915349 h 25 HYPERLINK l _Toc297915350 小
4、結(jié) PAGEREF _Toc297915350 h 26第一章 性能(xngnng)測(cè)試根底(gnd)軟件測(cè)試逐步成為(chngwi)軟件開(kāi)發(fā)過(guò)程中一個(gè)必不可少的環(huán)節(jié),隨著功能測(cè)試的必要性被認(rèn)可,自動(dòng)化測(cè)試和性能測(cè)試也逐步嶄露頭角。我們經(jīng)常會(huì)抱怨瀏覽網(wǎng)頁(yè)慢、下載文件慢,其實(shí)這都是屬于性能(xngnng)問(wèn)題。用戶在得益于功能方面的質(zhì)量提升后,開(kāi)始對(duì)性能有了新的認(rèn)識(shí)和要求,而性能測(cè)試并不像功能測(cè)試那樣可以“低門檻進(jìn)行。性能測(cè)試的本質(zhì)是通過(guò)編寫一個(gè)程序去測(cè)試另外一個(gè)程序,而正是(zhn sh)有了這個(gè)相對(duì)的“高門檻,性能測(cè)試便成了一個(gè)“高薪、“高技術(shù)含量的工作,新人在看到高手指點(diǎn)江山(性能測(cè)試)時(shí)
5、,充滿了羨慕的眼神,摩拳擦掌準(zhǔn)備進(jìn)入這個(gè)行業(yè)。在開(kāi)始從事性能測(cè)試工作之前,我們先來(lái)看看這個(gè)職位的考核標(biāo)準(zhǔn)和面臨的挑戰(zhàn)。1.1 性能測(cè)試工程師的標(biāo)準(zhǔn)及挑戰(zhàn)當(dāng)你掌握了性能測(cè)試的根本技能,接著就需要找到一家適宜的企業(yè),通過(guò)勞動(dòng)換取經(jīng)濟(jì)上的回報(bào),那么通常公司如何去招聘一個(gè)性能測(cè)試工程師,并如何進(jìn)行績(jī)效考評(píng)呢?即性能測(cè)試工程師應(yīng)該到達(dá)的工作目標(biāo)到底是什么?1.1.1 性能測(cè)試工程考評(píng)指標(biāo)在介紹性能測(cè)試之前,我們回想一下功能測(cè)試的考評(píng)和工作內(nèi)容。如果你是一名功能測(cè)試經(jīng)理,該如何考評(píng)你的員工呢?當(dāng)軟件測(cè)試剛剛進(jìn)入中國(guó)時(shí),我們對(duì)測(cè)試的理解是通過(guò)模擬用戶執(zhí)行,發(fā)現(xiàn)用戶可能遇到的問(wèn)題,而缺陷的數(shù)目成了考評(píng)的唯一指
6、標(biāo)。例如PM(Project Manager)規(guī)定,每個(gè)測(cè)試人員每天都要發(fā)現(xiàn)10個(gè)以上的缺陷,否那么說(shuō)明他在工作態(tài)度和工作能力上有一定的缺陷。綜上,作為一名功能測(cè)試工程師,其考評(píng)要求(yoqi)可以歸結(jié)為一條,那就是測(cè)試通過(guò)的軟件不會(huì)被用戶發(fā)現(xiàn)嚴(yán)重的缺陷。而現(xiàn)在,軟件測(cè)試逐漸正名,我們對(duì)測(cè)試的理解從證明軟件沒(méi)有(mi yu)錯(cuò)誤變?yōu)樽C明軟件具備一定的質(zhì)量,而功能測(cè)試工程師的考評(píng)標(biāo)準(zhǔn)也隨之發(fā)生了變化。功能測(cè)試工程師的考評(píng)指標(biāo)(zhbio)主要有以下幾點(diǎn):缺陷(quxin)數(shù)目缺陷的數(shù)目(shm)雖然不能作為主要的考評(píng)指標(biāo),但是從某一個(gè)角度也說(shuō)明了測(cè)試工程師發(fā)現(xiàn)問(wèn)題的能力。在成熟的軟件開(kāi)發(fā)公司中,
7、我們能夠通過(guò)歷史數(shù)據(jù)生成的缺陷質(zhì)量模型準(zhǔn)確預(yù)估缺陷數(shù)目。如果你發(fā)現(xiàn)的缺陷數(shù)量明顯低于預(yù)估,那么說(shuō)明你的工作可能存在一定問(wèn)題。2缺陷質(zhì)量有量沒(méi)有質(zhì)是不行的,由于計(jì)件制的壓迫,測(cè)試人員往往為了到達(dá)數(shù)目上的指標(biāo)而湊缺陷,數(shù)目是夠了,但是所提的缺陷都是雞毛蒜皮的事情,缺陷的危害等級(jí)和優(yōu)先級(jí)都比擬低,那么對(duì)軟件質(zhì)量的提升效果會(huì)相對(duì)較差。在缺陷的質(zhì)量中包含兩個(gè)概念:缺陷的嚴(yán)重等級(jí)和優(yōu)先級(jí)對(duì)缺陷的描述3工作態(tài)度測(cè)試工作是一個(gè)很容易“偷懶的工作,是需要個(gè)人積極主動(dòng)、追求完美的工作,對(duì)于測(cè)試工程師,只有具備善于交流、積極主動(dòng)、“視公為私的態(tài)度才能對(duì)被測(cè)對(duì)象負(fù)責(zé)。4工作效率在較短的時(shí)間內(nèi)是否能夠高質(zhì)量完成上級(jí)布置
8、任務(wù)的能力。5文檔編寫過(guò)去所謂的軟件測(cè)試工程師只是軟件測(cè)試執(zhí)行工程師,現(xiàn)在被稱為Tester。現(xiàn)在測(cè)試工程師還需要進(jìn)行測(cè)試方案、測(cè)試方案及用例等文檔的編寫工作。6團(tuán)隊(duì)協(xié)作能力7其他相關(guān)技能性能測(cè)試在國(guó)內(nèi)剛剛開(kāi)始流行。一個(gè)公司招聘性能測(cè)試工程師的主要目的是通過(guò)對(duì)產(chǎn)品進(jìn)行專業(yè)的性能測(cè)試,獲得一份性能測(cè)試評(píng)估報(bào)告,從而向用戶證明(zhngmng)本產(chǎn)品能夠滿足預(yù)期的性能需求。隨著性能測(cè)試職位的逐漸成熟,對(duì)這個(gè)職位的要求也越來(lái)越嚴(yán)格,性能測(cè)試的目的不僅僅是為了獲得當(dāng)前系統(tǒng)的性能評(píng)估(pn ),而是希望進(jìn)一步通過(guò)性能測(cè)試發(fā)現(xiàn)系統(tǒng)性能瓶頸并修復(fù)性能問(wèn)題(wnt)。而性能問(wèn)題的修復(fù)本錢(bn qin)一般(
9、ybn)相對(duì)較高,如何使用最低的本錢換取最高的性能,從而在性價(jià)比上找到黃金分割點(diǎn),將是性能調(diào)優(yōu)的重點(diǎn)。性能測(cè)試工程師的考評(píng)指標(biāo)會(huì)包括以下內(nèi)容:1是否能夠獨(dú)立開(kāi)發(fā)腳本能否使用一種或多種性能測(cè)試工具完成用戶行為的模擬腳本開(kāi)發(fā)工作。2能否對(duì)需求進(jìn)行性能分析并獲得性能需求任何測(cè)試都是基于需求的。作為一名性能測(cè)試工程師,需要具備一定的性能需求分析能力,從而根據(jù)用戶的需求進(jìn)行性能測(cè)試,得到被測(cè)系統(tǒng)與用戶需求之間的差距,從而生成性能報(bào)告并提供性能調(diào)優(yōu)方案。3能否設(shè)計(jì)場(chǎng)景及監(jiān)控負(fù)載系統(tǒng)完成對(duì)性能測(cè)試的實(shí)施和監(jiān)控工作對(duì)性能測(cè)試進(jìn)行實(shí)施,設(shè)計(jì)負(fù)載規(guī)那么并監(jiān)控負(fù)載下各個(gè)系統(tǒng)的狀態(tài)。4能否通過(guò)性能測(cè)試發(fā)現(xiàn)比擬具體的性
10、能瓶頸具備一定的性能結(jié)果分析及瓶頸定位能力。5文檔編寫與環(huán)境搭建的能力獨(dú)立編寫性能測(cè)試文檔和搭建測(cè)試環(huán)境的能力。6團(tuán)隊(duì)協(xié)作能力7其他相關(guān)技能1.1.2 性能測(cè)試工程師的挑戰(zhàn)作為工作了幾年的功能測(cè)試工程師來(lái)說(shuō),大家覺(jué)得在功能測(cè)試工作中的挑戰(zhàn)是什么呢?1公司不重視測(cè)試2就我一個(gè)人做測(cè)試3找不到(b do)缺陷4開(kāi)發(fā)工程師不能及時(shí)修改測(cè)試中發(fā)現(xiàn)(fxin)的缺陷5不熟悉業(yè)務(wù)6不了解(lioji)功能測(cè)試的方法及流程總結(jié)來(lái)說(shuō)就是工作(gngzu)內(nèi)容略感重復(fù)、缺乏技術(shù)含量,并且在有限(yuxin)的時(shí)間和資源下難以到達(dá)理想化的目標(biāo)。在實(shí)際工作中,要確保軟件沒(méi)有缺陷是比擬困難的,這是因?yàn)椋?軟件不可能不
11、存在缺陷2測(cè)試無(wú)法發(fā)現(xiàn)所有缺陷3測(cè)試在大多數(shù)情況下都沒(méi)有足夠的資源和時(shí)間(在本錢和質(zhì)量上尋求平衡)所以無(wú)法完全保證整個(gè)軟件在交付時(shí)不存在缺陷。雖然可以通過(guò)各種方法將嚴(yán)重級(jí)別或者優(yōu)先級(jí)別較高的問(wèn)題發(fā)現(xiàn)并修復(fù),但由于個(gè)人能力或客觀原因還是會(huì)遺留某些缺陷。那么作為一個(gè)性能測(cè)試工程師所面臨的挑戰(zhàn)又有哪些呢?1對(duì)性能測(cè)試的理論和技術(shù)不熟悉2公司不重視性能測(cè)試3就我一個(gè)人做性能測(cè)試4測(cè)試出來(lái)的結(jié)果不知道怎么分析5不熟悉業(yè)務(wù)6定位出的性能問(wèn)題無(wú)法修正總結(jié)來(lái)說(shuō),就是如何在有限的時(shí)間和資源下,保證提交給用戶的軟件系統(tǒng)可以到達(dá)指定的性能需求指標(biāo)。從某種角度來(lái)說(shuō),現(xiàn)在性能測(cè)試的成效被過(guò)度放大了。以功能測(cè)試為例,最初
12、軟件是無(wú)須測(cè)試的,因?yàn)檐浖δ軉我唬浖|(zhì)量是依賴于有經(jīng)驗(yàn)的開(kāi)發(fā)人員自己進(jìn)行維護(hù),隨著開(kāi)發(fā)規(guī)模的逐漸擴(kuò)大,軟件越來(lái)越復(fù)雜,隨之質(zhì)量逐漸下降,這時(shí)功能測(cè)試的低本錢效果就出現(xiàn)了。各大公司開(kāi)始大規(guī)模地成立測(cè)試部門,隨著功能測(cè)試部門的規(guī)模逐漸擴(kuò)大,其效率開(kāi)始不斷下降,依賴于功能測(cè)試提高質(zhì)量的性價(jià)比逐漸降低,而現(xiàn)在大家都認(rèn)識(shí)到功能測(cè)試并不是萬(wàn)能的,其主要作用是保證軟件到達(dá)一定的質(zhì)量,通過(guò)自動(dòng)化可以降低功能測(cè)試的本錢。性能測(cè)試也處在這樣一個(gè)過(guò)程中,由于客戶日趨成熟,逐漸意識(shí)到性能是繼功能后另一個(gè)重要的質(zhì)量指標(biāo),而我們常常錯(cuò)誤地認(rèn)為性能測(cè)試就是滿足用戶性能需求的靈丹妙藥,掌握了性能測(cè)試仿佛就走在了軟件測(cè)試
13、技術(shù)的最高端,卻忽略了去思考性能測(cè)試到底能做些什么。性能問(wèn)題并不像功能問(wèn)題那么棘手,因?yàn)閹缀醭R?jiàn)的性能問(wèn)題都可以通過(guò)硬件解決(jiju),也就是花點(diǎn)兒錢買個(gè)更加強(qiáng)力的硬件配置來(lái)提高軟件的效率,其次通過(guò)性能測(cè)試后發(fā)現(xiàn)了性能瓶頸(一般性能瓶頸都是較為(jio wi)底層的問(wèn)題),修復(fù)(xif)的本錢(bn qin)和風(fēng)險(xiǎn)也是需要(xyo)考慮的問(wèn)題。好比功能測(cè)試在最后的BETA測(cè)試中發(fā)現(xiàn)了一個(gè)異常嚴(yán)重的功能問(wèn)題,而該問(wèn)題是由于引擎所導(dǎo)致的,改還是不改呢?功能是必須要進(jìn)行修改的,如果不修改用戶無(wú)法正常使用,但是從性能角度來(lái)說(shuō),系統(tǒng)處理速度慢一點(diǎn)往往還是能夠接受的。往往出現(xiàn)花了很多錢進(jìn)行性能測(cè)試,并且
14、發(fā)現(xiàn)了性能問(wèn)題,但是修復(fù)該性能缺陷的本錢或風(fēng)險(xiǎn)太高,最終不得不放棄。性能測(cè)試無(wú)非就是以相對(duì)較低的本錢模擬一個(gè)真實(shí)環(huán)境來(lái)了解系統(tǒng)上線后的性能情況,至于定位、分析及調(diào)優(yōu),這需要一個(gè)團(tuán)隊(duì)的支持才能完成,所以軟件的性能問(wèn)題不是簡(jiǎn)簡(jiǎn)單單靠最后進(jìn)行幾次性能測(cè)試就能定位解決的。1.2 性能測(cè)試根底1.2.1 性能性能的定義在新華字典中可以查詢到這樣的解釋:性能指器物所具有的性質(zhì)與效用。這個(gè)定義中包括了以下兩層含義:性質(zhì)性質(zhì)是指該器物具有什么特性,能夠做什么。效用是指該器物能夠干得怎么樣。在我們身邊的性能有哪些呢?F1賽事(si sh)從競(jìng)技比賽的角度來(lái)說(shuō),在比賽中獲勝(hu shn)的一方性能較好,那么是不
15、是性能只包括速度呢?不是(b shi)F1比賽并不是(b shi)直道跑1000米,而是有很多轉(zhuǎn)彎,而且賽程也較長(zhǎng)。車速并不是獲得冠軍的唯一指標(biāo),而車胎的類型、進(jìn)出站的次數(shù)(csh)、駕車選手的發(fā)揮等條件組合在一起才是一個(gè)冠軍誕生的根底。個(gè)人電腦個(gè)人電腦的性能指什么呢?用起來(lái)比擬快?看起來(lái)比擬漂亮?我們通常說(shuō)電腦的性能是指運(yùn)行常用軟件的反響迅速,但是僅僅擁有一顆高級(jí)的芯,電腦一定能夠性能出眾嗎?不一定,這還取決于存儲(chǔ)器、顯卡等相關(guān)設(shè)備。針對(duì)CPU來(lái)說(shuō),主頻也并不是說(shuō)明CPU性能的唯一指標(biāo),并不是說(shuō)CPU的頻率越高,其計(jì)算速度越快。例如:現(xiàn)在有兩塊CPU,一塊是奔騰V3.0c主頻3GHz,另外一
16、塊是酷睿2 T7200主頻2GHz,顯然T7200的性能遠(yuǎn)遠(yuǎn)優(yōu)于奔騰V。軟件單位時(shí)間內(nèi)能處理的業(yè)務(wù)、處理一個(gè)運(yùn)算所需要花費(fèi)的時(shí)間、翻開(kāi)該軟件需要的時(shí)間,都能作為衡量軟件性能的指標(biāo)。例如在相同的電腦配置下分別安裝Windows XP和Windows Vista操作系統(tǒng)。在這兩個(gè)操作系統(tǒng)中復(fù)制大量文件至移動(dòng)硬盤時(shí),就會(huì)發(fā)現(xiàn)在Vista下進(jìn)行相同的操作會(huì)比XP慢很多,這個(gè)時(shí)候就會(huì)說(shuō)在該硬件配置下Vista的磁盤讀寫性能相對(duì)XP較差。失敗案例為什么突然開(kāi)始如此重視性能測(cè)試呢?那是因?yàn)榻?jīng)歷了太多慘痛的經(jīng)歷,讓我們不得不重視這個(gè)以前被無(wú)視的問(wèn)題。接著來(lái)回憶一下發(fā)生在2007年的一件由于性能測(cè)試缺乏而導(dǎo)致的
17、慘痛案例奧運(yùn)會(huì)訂票系統(tǒng)癱瘓。2021年8月,對(duì)于全國(guó)人民來(lái)說(shuō),沒(méi)有什么比奧運(yùn)會(huì)更大的事情了。買到一張滿意如意的門票,也成了很多人的一個(gè)夢(mèng)想。網(wǎng)上購(gòu)票、先到先得、人人參與的策略,讓大家覺(jué)得進(jìn)入鳥(niǎo)巢觀看開(kāi)幕式,見(jiàn)證這歷史性的一刻成為可能。然而當(dāng)大家在奧運(yùn)官方售票網(wǎng)上搶購(gòu)門票時(shí),這個(gè)夢(mèng)想?yún)s被網(wǎng)上購(gòu)票系統(tǒng)的癱瘓擊成碎片。我們來(lái)思考一個(gè)(y )問(wèn)題,作為一個(gè)奧運(yùn)訂票系統(tǒng)應(yīng)該會(huì)有多少人去買票呢?看一下(yxi)當(dāng)時(shí)的新聞報(bào)道:境內(nèi)公眾(gngzhng)啟動(dòng)第二階段奧運(yùn)會(huì)門票預(yù)售。然而,為了讓更多的公眾實(shí)現(xiàn)奧運(yùn)夢(mèng)想的“先到先得,售完為止的銷售政策適得其反,公眾紛紛搶在第一時(shí)間訂票,致使票務(wù)官網(wǎng)壓力激增(jz
18、ng),承受了超過(guò)自身設(shè)計(jì)容量8倍的流量(liling),導(dǎo)致系統(tǒng)癱瘓。超出8倍系統(tǒng)容量?那么接著來(lái)看看真正的系統(tǒng)容量是多少呢?昨天上午9點(diǎn),預(yù)售一開(kāi)始,公眾提交申請(qǐng)空前踴躍。北京奧運(yùn)會(huì)官方票務(wù)網(wǎng)站的瀏覽量在第一個(gè)小時(shí)內(nèi)到達(dá)800萬(wàn)次,每秒鐘從網(wǎng)上提交的門票申請(qǐng)超過(guò)20萬(wàn)張;票務(wù)呼叫中心熱線的呼入量超過(guò)了380萬(wàn)人次。由于瞬間訪問(wèn)數(shù)量過(guò)大,技術(shù)系統(tǒng)應(yīng)對(duì)不暢,造成很多申購(gòu)者無(wú)法及時(shí)提交申請(qǐng)。一個(gè)小時(shí)訪問(wèn)量到達(dá)800萬(wàn)次,通過(guò)計(jì)算可以得到平均每分鐘的訪問(wèn)量約是12萬(wàn)次,而每秒約是2000次。比照自身設(shè)計(jì)的每小時(shí)100萬(wàn)次,每秒的訪問(wèn)量預(yù)估為250次左右,你是不是發(fā)現(xiàn)系統(tǒng)估計(jì)的訪問(wèn)量少得可憐?作為一
19、個(gè)門戶網(wǎng)站,Sina、Sohu每秒的訪問(wèn)量是多少?需求是不是出了問(wèn)題?作為百年一遇的奧運(yùn)會(huì)盛典,每個(gè)炎黃子孫都會(huì)希望親身在鳥(niǎo)巢感受奧運(yùn)開(kāi)幕式的盛況,而一張奧運(yùn)會(huì)門票成了炙手可熱的香餑餑,由于采取的是先到先得的策略,為了保證自己能夠成為第一個(gè)進(jìn)入系統(tǒng)購(gòu)票的用戶,我們需要確保自己以最快的速度進(jìn)行訂單的操作(提前準(zhǔn)備用戶注冊(cè)、表單填寫、業(yè)務(wù)熟悉、網(wǎng)絡(luò)調(diào)整、個(gè)人反響速度調(diào)整、期待好運(yùn)降臨)。當(dāng)?shù)竭_(dá)北京時(shí)間9點(diǎn)整,馬上單擊訂票按鈕。有少數(shù)人由于最先進(jìn)入系統(tǒng),所以他們順利地訂票成功,而更多用戶由于網(wǎng)絡(luò)的延時(shí)或者某些別的原因,被堵在了系統(tǒng)的外面。在這種情況下就會(huì)產(chǎn)生大量用戶并發(fā)訂票的操作。北京奧運(yùn)會(huì)官方票務(wù)
20、網(wǎng)站的瀏覽量在第一個(gè)小時(shí)到達(dá)800萬(wàn)次,每秒鐘從網(wǎng)上提交的訂票申請(qǐng)超過(guò)20萬(wàn)張。從這句話可以看出,瀏覽量和門票申請(qǐng)的數(shù)量完全不是一個(gè)數(shù)量級(jí),對(duì)應(yīng)每秒不過(guò)2000屢次的瀏覽量,系統(tǒng)卻承受了20萬(wàn)張每秒的申請(qǐng)量。這是因?yàn)榻^大多數(shù)購(gòu)票者都非常有經(jīng)驗(yàn),知道不能到9點(diǎn)鐘再來(lái)填寫訂票表單,而是應(yīng)該不斷地單擊提交按鈕將事先輸入的訂票信息提交給效勞器。接著來(lái)分析一下如果想要訂到奧運(yùn)會(huì)的門票需要(xyo)做哪些工作:用戶注冊(cè)當(dāng)然要先注冊(cè)訂票網(wǎng)站(wn zhn)會(huì)員,并順便把銀行卡也準(zhǔn)備好,確保支付順利。2表單的填寫(tinxi)在訂票開(kāi)始前,先到奧運(yùn)會(huì)訂票系統(tǒng)(xtng)上去,將要購(gòu)置(guzh)的開(kāi)閉幕式、足
21、球決賽等關(guān)鍵場(chǎng)次的表單都準(zhǔn)備好。3熟悉業(yè)務(wù)整理并熟悉整個(gè)購(gòu)票的流程。4網(wǎng)絡(luò)調(diào)整對(duì)于整個(gè)開(kāi)幕式來(lái)說(shuō),全國(guó)可能有幾千萬(wàn)的用戶在嘗試購(gòu)票,而開(kāi)幕式的門票一共也就3萬(wàn)多張,對(duì)于如此多的需求(接近800萬(wàn)的訪問(wèn)量)只是杯水車薪,所以如果想要在這種供需嚴(yán)重不平衡的情況下獲得一張開(kāi)幕式的門票,網(wǎng)速是一個(gè)非常重要的因素。每秒20萬(wàn)的訂票申請(qǐng),也就是平均每毫秒200張。如果一個(gè)上海的網(wǎng)友和一個(gè)北京的網(wǎng)友同時(shí)在9點(diǎn)整購(gòu)票,那么上海的兄弟就訂不到這張票了,因?yàn)樯虾k娦诺奖本┚W(wǎng)通的平均延時(shí)都在200ms,按照剛剛的平均值來(lái)計(jì)算,已經(jīng)賣掉4萬(wàn)張票了。所以如果想要購(gòu)置到門票,最好在北京機(jī)房進(jìn)行訂票,使用光纖連接,確保訂票
22、信息到達(dá)效勞器的延時(shí)在1ms之內(nèi),那么成功的概率就會(huì)大大提升。5個(gè)人反映時(shí)間其實(shí)提交訂票信息也是有講究的,不同的人對(duì)于反映來(lái)說(shuō)都有快慢之分,一般人在接受了信息到反映為動(dòng)作可能需要0406秒的時(shí)間,而通過(guò)訓(xùn)練可以提升到0102秒,算算這是200毫秒的差距啊,又是4萬(wàn)張票沒(méi)了,所以練練手速是很重要的一點(diǎn),懂一些技術(shù)的朋友可能會(huì)使用按鍵精靈、QTP這類自動(dòng)化工具來(lái)實(shí)現(xiàn),將時(shí)間更加精準(zhǔn)地進(jìn)行控制,甚至可以考慮做一點(diǎn)搶跑的操作。好,現(xiàn)在萬(wàn)事俱備,時(shí)間一到9點(diǎn),如果你是那個(gè)能在最短時(shí)間就將請(qǐng)求發(fā)送到效勞器的人,作為第一個(gè)沖入系統(tǒng)的用戶,就能順利地獲得想要預(yù)訂的門票。而如果你很不幸在9點(diǎn)鐘打了一個(gè)噴嚏,再去
23、提交門票預(yù)訂申請(qǐng),那么很抱歉,1秒鐘過(guò)去了,有20萬(wàn)人在你前面了。雖然(surn)整個(gè)系統(tǒng)在上線前進(jìn)行過(guò)性能測(cè)試,但由于錯(cuò)誤的需求導(dǎo)致當(dāng)出現(xiàn)遠(yuǎn)遠(yuǎn)超出系統(tǒng)所能負(fù)載的訪問(wèn)量時(shí),系統(tǒng)來(lái)不及響應(yīng)就癱瘓了。錯(cuò)誤的需求是整個(gè)售票網(wǎng)站癱瘓的最大原因。那么是不是需求做錯(cuò)了,系統(tǒng)癱瘓就是理所當(dāng)然的呢?我們?cè)賮?lái)看看當(dāng)時(shí)(dngsh)的新聞解釋:從昨天上午8點(diǎn)左右開(kāi)始,就有不少網(wǎng)民登錄(dn l)票務(wù)官網(wǎng)排隊(duì)等待申購(gòu)門票。據(jù)了解,從上午9點(diǎn)正式開(kāi)始(kish)售票到中午12點(diǎn)的3個(gè)小時(shí)內(nèi),票務(wù)網(wǎng)站的瀏覽(li ln)次數(shù)到達(dá)2000萬(wàn)次。這與此次所提供的100萬(wàn)次/小時(shí)的流量相差甚遠(yuǎn)。不停地刷新網(wǎng)頁(yè),也是造成網(wǎng)絡(luò)擁
24、堵的原因之一。楊力說(shuō),不少網(wǎng)民在無(wú)法正常登錄后便不斷刷新,“這就相當(dāng)于一名申購(gòu)者變成了假設(shè)干名申購(gòu)者,無(wú)形中增大網(wǎng)站流量。從技術(shù)角度上講,網(wǎng)站的流量幾乎呈幾何倍增長(zhǎng),導(dǎo)致其他申購(gòu)者無(wú)法登錄。當(dāng)大量的用戶進(jìn)行訪問(wèn)時(shí),整個(gè)系統(tǒng)由于網(wǎng)絡(luò)瓶頸或處理瓶頸導(dǎo)致了擁堵,用戶無(wú)法訪問(wèn)。既然沒(méi)有有效的網(wǎng)絡(luò)流量處理能力,如果進(jìn)行流量控制,問(wèn)題就會(huì)被限制在一個(gè)可控的范圍內(nèi)。這好比一個(gè)銀行有大量人來(lái)取款,總不能聽(tīng)之任之,而應(yīng)該有專人進(jìn)行協(xié)調(diào)管理,確保秩序,并告知排在后面的顧客可以考慮改天再來(lái)。導(dǎo)致奧運(yùn)會(huì)售票網(wǎng)站癱瘓的原因是綜合的。如果當(dāng)時(shí)進(jìn)行了流量控制,那么可以保證登錄到效勞器上的用戶可以比擬正常地訪問(wèn),而超出效勞器
25、處理能力的用戶將無(wú)法進(jìn)入系統(tǒng),從而確保系統(tǒng)不會(huì)由于負(fù)載過(guò)大而停止響應(yīng)。進(jìn)一步來(lái)說(shuō)如果剩下的用戶需要通過(guò)排隊(duì)的方式來(lái)登錄效勞器進(jìn)行購(gòu)票,那么當(dāng)時(shí)為難的情況就不會(huì)出現(xiàn)。按照系統(tǒng)默認(rèn)的處理能力,相信在兩個(gè)小時(shí)內(nèi)肯定能夠把所有的票都銷售完畢。當(dāng)然,也需要以平常心來(lái)看待這個(gè)事情,作為任意一家公司來(lái)說(shuō),開(kāi)發(fā)和維護(hù)一個(gè)奧運(yùn)會(huì)門票系統(tǒng)都是有一定困難的,但是問(wèn)題的出現(xiàn)告訴我們,性能測(cè)試不是簡(jiǎn)單做做就可以的,想要真正地解決性能問(wèn)題需要注意以下幾個(gè)問(wèn)題:1確定需求整個(gè)系統(tǒng)到底(do d)有多少人會(huì)訪問(wèn)?并發(fā)(bngf)量會(huì)是多少?訪問(wèn)集中在哪些(nxi)業(yè)務(wù)上?根據(jù)這些需求進(jìn)行性能測(cè)試,即可保證系統(tǒng)在指定的指標(biāo)下能
26、夠(nnggu)正常工作。如何獲得奧運(yùn)會(huì)訂票的真實(shí)需求呢?其實(shí)(qsh)并不是很難。首先,在奧運(yùn)會(huì)第一次抽簽售票的過(guò)程中就能了解有多少人有意向購(gòu)票,由于中簽率非常低,那么沒(méi)有中簽的人一定會(huì)參加在線購(gòu)票,所以可以得到一個(gè)比擬不錯(cuò)的訂票訪問(wèn)量預(yù)估。其次,可以參考一下往屆奧運(yùn)會(huì)售票的經(jīng)驗(yàn)和數(shù)據(jù)。最后,可以做一次模擬售票的測(cè)試,給予一定的獎(jiǎng)勵(lì)號(hào)召大家都來(lái)嘗試一下(例如:頭200名注冊(cè)的用戶可以免費(fèi)獲贈(zèng)一張門票,或者訂票尾號(hào)為多少的用戶獲贈(zèng)門票),確保在正常上線的情況下不出問(wèn)題。奧運(yùn)會(huì)開(kāi)幕式前就在鳥(niǎo)巢進(jìn)行了帶妝彩排,通過(guò)這次性能測(cè)試了解了開(kāi)幕式的真實(shí)情況,從而制定了推薦觀眾在開(kāi)幕式前及早進(jìn)入場(chǎng)地且開(kāi)幕式
27、結(jié)束后先等待運(yùn)發(fā)動(dòng)離場(chǎng)后觀眾再分批離場(chǎng)的策略,確保不會(huì)出現(xiàn)擁堵的情況,這就是通過(guò)性能測(cè)試發(fā)現(xiàn)問(wèn)題并進(jìn)行修改的案例。2確保系統(tǒng)的健壯性系統(tǒng)應(yīng)該能夠在極端負(fù)載的情況下正常運(yùn)行。這就好我們,不能因?yàn)樯顗毫Υ缶筒还ぷ髁耍梢怨ぷ餍实停遣荒懿还ぷ鳌?制定意外的處理方式在運(yùn)行過(guò)程中有全面的監(jiān)控,并且針對(duì)各種意外制定詳細(xì)的應(yīng)急方案,才能確保系統(tǒng)有能力處理各種意外情況。對(duì)于可能出現(xiàn)的訪問(wèn)頂峰,相信很多網(wǎng)絡(luò)維護(hù)的朋友做過(guò)這樣的事情,將公司多余的效勞器或者不常用的效勞器騰出來(lái),參加核心效勞器的群集中,并且設(shè)置流量閾值,確保整個(gè)系統(tǒng)能夠正常工作。當(dāng)出現(xiàn)網(wǎng)絡(luò)流量過(guò)大的情況時(shí),可以通過(guò)隊(duì)列等技術(shù)手段進(jìn)行解決。還
28、記得我在Etang做SQA的時(shí)候,每次進(jìn)行CET查分的時(shí)候,公司都會(huì)將所有的效勞器停下來(lái),全部支持CET查分的業(yè)務(wù)。所以說(shuō),并不是奧運(yùn)會(huì)在線購(gòu)票的用戶請(qǐng)求遠(yuǎn)遠(yuǎn)超出了我們的技術(shù)能力范圍才導(dǎo)致網(wǎng)站癱瘓。一些門戶網(wǎng)站在直播神七出倉(cāng)時(shí),其頁(yè)面的并發(fā)請(qǐng)求會(huì)遠(yuǎn)遠(yuǎn)高于奧運(yùn)訂票網(wǎng)站的并發(fā)請(qǐng)求,但是并沒(méi)有出現(xiàn)無(wú)法訪問(wèn)或者響應(yīng)時(shí)間較長(zhǎng)的情況。性能(xngnng)測(cè)試上面談了什么(shn me)是性能,無(wú)視(wsh)了性能會(huì)帶來(lái)怎樣的結(jié)果,那么什么(shn me)是性能測(cè)試呢?性能測(cè)試(csh)的概念性能測(cè)試是系統(tǒng)測(cè)試的一種。作為一個(gè)優(yōu)秀的系統(tǒng)測(cè)試工程師,需要通過(guò)“系統(tǒng)的視角來(lái)分析被測(cè)試系統(tǒng),分析包含以下兩點(diǎn):1功
29、能測(cè)試:某個(gè)功能點(diǎn)2性能測(cè)試:整個(gè)系統(tǒng),包括軟件和硬件在軟件質(zhì)量模型中,性能測(cè)試是屬于效率這一類的。我們先來(lái)了解一下這句話涉及的兩個(gè)概念。質(zhì)量模型:一組特性及特性之間的關(guān)系,它提供規(guī)定質(zhì)量需求和評(píng)價(jià)質(zhì)量的根底。軟件效率(efficiency):在規(guī)定條件下,相對(duì)于所用資源的數(shù)量,軟件產(chǎn)品可提供適當(dāng)性能的能力。其中資源可能包括其他軟件產(chǎn)品、系統(tǒng)的軟件和硬件配置,以及物質(zhì)材料(如打印紙、磁盤等)。衡量一個(gè)軟件的性能,需要從軟件效率的以下3點(diǎn)考慮:時(shí)間特性在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時(shí),提供適當(dāng)?shù)捻憫?yīng)和處理時(shí)間以及吞吐率的能力。資源利用性在規(guī)定條件下,軟件產(chǎn)品執(zhí)行其功能時(shí),使用適宜數(shù)量和類別的資
30、源的能力。效率依從性軟件產(chǎn)品遵循與效率相關(guān)的標(biāo)準(zhǔn)或約定的能力。也就是說(shuō)我們需要確保軟件在一定的資源配置條件下到達(dá)一定的性能,并且遵守相關(guān)的標(biāo)準(zhǔn)或協(xié)議。例如我們從來(lái)不會(huì)奢望一臺(tái)80386的電腦能夠在1分鐘內(nèi)啟動(dòng)完Windows Vista操作系統(tǒng),因?yàn)槲覀冎榔溆布环袭a(chǎn)品的標(biāo)準(zhǔn)。但是如果一臺(tái)高級(jí)的主流配置電腦在1分鐘內(nèi)無(wú)法完成Windows Vista操作系統(tǒng)的啟動(dòng),你就會(huì)開(kāi)始疑心是不是自己的硬件存在某些問(wèn)題,如果不是硬件問(wèn)題,那么就會(huì)覺(jué)得這個(gè)操作系統(tǒng)很慢,性能很差。所以一個(gè)性能測(cè)試工程師的主要工作目標(biāo)就是(jish)確保系統(tǒng)能夠在一定的硬件、軟件環(huán)境下到達(dá)(dod)一定(ydng)的性能指
31、標(biāo)。而性能(xngnng)測(cè)試(Performance Testing)的定義為:在一定的負(fù)載情況下,系統(tǒng)的響應(yīng)時(shí)間(shjin)等特性是否滿足特定的性能需求。從某些角度來(lái)說(shuō),性能其實(shí)是功能的一種。什么是負(fù)載?本書談到的性能問(wèn)題都不是單機(jī)性能問(wèn)題,而是基于網(wǎng)絡(luò)架構(gòu)(如C/S架構(gòu)或者B/S架構(gòu))的性能問(wèn)題。當(dāng)眾多終端用戶對(duì)系統(tǒng)進(jìn)行訪問(wèn)時(shí),用戶越多,那么效勞器需要處理的客戶請(qǐng)求也就越多,從而形成了負(fù)載,而在這里負(fù)載的概念包含以下3點(diǎn):1系統(tǒng)實(shí)際用戶可能會(huì)有很多人使用同一個(gè)系統(tǒng),但并不是所有的用戶都會(huì)同時(shí)使用該系統(tǒng),所以系統(tǒng)的實(shí)際用戶是一個(gè)容量的問(wèn)題,而不是負(fù)載的問(wèn)題。2系統(tǒng)在線用戶當(dāng)系統(tǒng)用戶對(duì)系統(tǒng)
32、進(jìn)行操作時(shí),我們認(rèn)為該用戶為在線用戶,這些用戶對(duì)系統(tǒng)形成了負(fù)載,在線用戶和實(shí)際用戶的比例是根據(jù)系統(tǒng)特性決定的。例如:對(duì)于電子郵件系統(tǒng),每天上班后幾乎所有的實(shí)際用戶都會(huì)進(jìn)行收取郵件的操作,這個(gè)時(shí)候在線用戶幾乎等于實(shí)際用戶。而對(duì)于某網(wǎng)絡(luò)游戲來(lái)說(shuō),工作時(shí)間的在線用戶甚至缺乏所有用戶的20。3并發(fā)操作用戶在線后會(huì)對(duì)系統(tǒng)產(chǎn)生負(fù)載,但是用戶和用戶之間的操作卻不是并發(fā)的,這是因?yàn)槭紫扔脩舻牟僮餍枰訒r(shí)等待,其次每個(gè)用戶的操作并不是完全相同。并發(fā)操作會(huì)對(duì)系統(tǒng)產(chǎn)生很大的負(fù)載,當(dāng)多個(gè)用戶同時(shí)對(duì)某個(gè)功能進(jìn)行操作時(shí),效勞器必須對(duì)這些請(qǐng)求進(jìn)行隊(duì)列管理,依次處理。性能測(cè)試的分類性能測(cè)試的方法很多,名詞也很多,從使用方便的
33、角度來(lái)說(shuō),這里將性能測(cè)試分為6大種。負(fù)載(fzi)測(cè)試(Load Testing)負(fù)載測(cè)試是指在一定(ydng)的軟件、硬件及網(wǎng)絡(luò)環(huán)境下,運(yùn)行一種或多種業(yè)務(wù),在不同虛擬用戶數(shù)量的情況下,測(cè)試效勞(xio lo)器的性能指標(biāo)是否在用戶的要求范圍(fnwi)內(nèi),以此確定系統(tǒng)所能承載的最大用戶數(shù)、最大有效用戶數(shù)以及不同用戶數(shù)下的系統(tǒng)響應(yīng)時(shí)間及效勞(xio lo)器的資源利用率。負(fù)載測(cè)試強(qiáng)調(diào)的是在一定的環(huán)境下系統(tǒng)能夠到達(dá)的峰值指標(biāo),大多數(shù)的性能測(cè)試都是負(fù)載測(cè)試。例如在各大網(wǎng)站上看到的各種顯卡測(cè)試,都是通過(guò)運(yùn)行3D Mark或者某種游戲得到的最終數(shù)據(jù),通過(guò)這個(gè)數(shù)據(jù)來(lái)說(shuō)明顯卡的峰值處理能力,這就是負(fù)載測(cè)試
34、的一種方式。通過(guò)運(yùn)行EVEREST的性能測(cè)試功能對(duì)當(dāng)前硬件平臺(tái)下CPU Queen進(jìn)行負(fù)載測(cè)試,負(fù)載結(jié)果如圖1.1所示,最終得分為8392分。壓力測(cè)試(Stress Testing)壓力測(cè)試是指在一定的軟件、硬件及網(wǎng)絡(luò)環(huán)境下,模擬大量的虛擬用戶向效勞器產(chǎn)生負(fù)載,使效勞器的資源處于極限狀態(tài)下并長(zhǎng)時(shí)間連續(xù)運(yùn)行,以測(cè)試效勞器在高負(fù)載情況下是否能夠穩(wěn)定工作。與負(fù)載測(cè)試獲得峰值性能數(shù)據(jù)不同,壓力測(cè)試強(qiáng)調(diào)在極端情況下系統(tǒng)的穩(wěn)定性,這個(gè)時(shí)候處理能力已經(jīng)不重要了。例如在CPU超頻后經(jīng)常需要對(duì)系統(tǒng)的穩(wěn)定性進(jìn)行測(cè)試,那么可以通過(guò)Prime95工具來(lái)進(jìn)行穩(wěn)定性測(cè)試,如圖1.2所示,該軟件可以讓系統(tǒng)的所有資源長(zhǎng)時(shí)間處
35、于消耗殆盡的狀態(tài)。通過(guò)這樣一段時(shí)間的“烤機(jī)后,如果沒(méi)有出現(xiàn)死機(jī)等情況,可以認(rèn)為系統(tǒng)通過(guò)了壓力測(cè)試,即可以在各種情況下穩(wěn)定地運(yùn)行。圖1.1 EVEREST CPU Queen測(cè)試(csh)結(jié)果 圖1.2 壓力(yl)測(cè)試工具Prime95容量(rngling)測(cè)試(Volume Testing)容量測(cè)試是指在一定的軟件、硬件及網(wǎng)絡(luò)環(huán)境(hunjng)下,在數(shù)據(jù)庫(kù)中構(gòu)造不同數(shù)量級(jí)別的數(shù)據(jù)記錄,運(yùn)行一種或多種業(yè)務(wù)在一定虛擬(xn)用戶數(shù)量的情況下,獲取不同數(shù)量級(jí)別的效勞器性能指標(biāo),以確定數(shù)據(jù)庫(kù)的最正確容量和最大容量。容量測(cè)試不僅可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行,還可以對(duì)硬件處理能力、各種效勞器的連接能力等進(jìn)行,以此
36、來(lái)測(cè)試系統(tǒng)在不同容量級(jí)別下是否能到達(dá)指定的性能。容量測(cè)試和負(fù)載測(cè)試的區(qū)別在于,容量測(cè)試主要關(guān)心how much,而負(fù)載測(cè)試那么同時(shí)強(qiáng)調(diào)how much和how fast。例如測(cè)試一個(gè)Word2003文檔中最多可以存放多少個(gè)漢字。容量測(cè)試中也包含了可伸縮性測(cè)試的概念,可伸縮性可以從硬件和軟件兩個(gè)方面來(lái)理解:1硬件的可伸縮性是否可以通過(guò)硬件設(shè)備的增加來(lái)支持更多的用戶,比方通過(guò)增加CPU個(gè)數(shù)或者存儲(chǔ)器空間大小等。2軟件的可伸縮性是否可以通過(guò)運(yùn)行更多的實(shí)例或者采用分布式處理來(lái)支持更多的用戶。再具體一點(diǎn)就是一個(gè)可伸縮系統(tǒng)必須具有隨負(fù)荷增加響應(yīng)時(shí)間也線性增加的特點(diǎn)。這樣就可以通過(guò)線性增加硬件設(shè)備、實(shí)例個(gè)數(shù)
37、或者分布式處理點(diǎn)來(lái)處理更多的數(shù)據(jù)量,也就能更好地在不增加響應(yīng)時(shí)間的前提下支持更多的用戶。可伸縮性測(cè)試具體的測(cè)試過(guò)程為:進(jìn)行負(fù)載測(cè)試,記錄不同負(fù)載下的平均響應(yīng)時(shí)間,然后查看平均響應(yīng)時(shí)間是否線性增加。如線性增加,那么說(shuō)明系統(tǒng)具有可伸縮性;否那么說(shuō)明系統(tǒng)可伸縮性較差或者沒(méi)有可伸縮性配置測(cè)試(Configuration Testing)配置測(cè)試是指在不同的軟件、硬件以及網(wǎng)絡(luò)環(huán)境配置下,運(yùn)行一種或多種業(yè)務(wù),在一定的虛擬用戶數(shù)量情況下,獲得不同配置的性能指標(biāo),用f選擇最正確的設(shè)備及參數(shù)配置。通過(guò)產(chǎn)生不同的配置,來(lái)得到系統(tǒng)性能的變化狀況。在購(gòu)置電腦前,我們通常會(huì)參考各種硬件評(píng)測(cè),通過(guò)這些評(píng)測(cè)可以得知如何花最
38、少的錢獲得最高的性能回報(bào),而這些測(cè)試都是通過(guò)在相同的平臺(tái)下切換CPU或者顯卡等硬件來(lái)獲得對(duì)應(yīng)的性能指標(biāo)。例如可以使用EVEREST Ultimate、Iometer、Sisoft Sandra這類工具來(lái)獲得當(dāng)前系統(tǒng)整體或者某個(gè)硬件的性能數(shù)據(jù)。通過(guò)配置測(cè)試可以將性能缺陷放大,方便定位性能瓶頸。通過(guò)EVEREST測(cè)試內(nèi)存讀寫速度,得出當(dāng)前系統(tǒng)的內(nèi)存寫入速度為3029MBs,如圖1.3所示。圖1.3 EVEREST內(nèi)存寫入測(cè)試(csh)結(jié)果基準(zhǔn)(jzhn)測(cè)試(Benchmark Testing)基準(zhǔn)測(cè)試是指在一定的軟件、硬件及網(wǎng)絡(luò)環(huán)境下,模擬一定數(shù)量的虛擬用戶運(yùn)行一種或多種業(yè)務(wù)(yw),將測(cè)試結(jié)果
39、作為基線數(shù)據(jù),在系統(tǒng)調(diào)優(yōu)或系統(tǒng)評(píng)測(cè)的過(guò)程中,通過(guò)運(yùn)行相同的業(yè)務(wù)場(chǎng)景比擬(bn)測(cè)試結(jié)果,確定(qudng)調(diào)優(yōu)的結(jié)果是否到達(dá)預(yù)期效果或者為系統(tǒng)的選擇提供決策數(shù)據(jù)。基準(zhǔn)測(cè)試一般基于配置測(cè)試,通過(guò)配置測(cè)試得到數(shù)據(jù),并將這個(gè)數(shù)據(jù)作為基準(zhǔn)來(lái)比擬每次調(diào)優(yōu)后的性能是否有所改善。例如前面通過(guò)EVEREST Ultimate工具獲得了當(dāng)前的內(nèi)存讀寫速度數(shù)據(jù),然后對(duì)系統(tǒng)進(jìn)行調(diào)優(yōu)(修改內(nèi)存時(shí)序),再做一次相同的測(cè)試,如果內(nèi)存讀寫速度上升了,就說(shuō)明前面的調(diào)優(yōu)是正確有效的,反之那么說(shuō)明調(diào)優(yōu)無(wú)效。并發(fā)測(cè)試(Concurrency Testing)并發(fā)測(cè)試是指通過(guò)模擬多個(gè)用戶并發(fā)訪問(wèn)同一個(gè)應(yīng)用、存儲(chǔ)過(guò)程或數(shù)據(jù)記錄以及其他
40、并發(fā)操作,測(cè)試是否存在死鎖、數(shù)據(jù)錯(cuò)誤等故障。為了防止數(shù)據(jù)庫(kù)或函數(shù)方法在并發(fā)下的錯(cuò)誤,需要專門針對(duì)每個(gè)模塊進(jìn)行并發(fā)測(cè)試。例如軟件系統(tǒng)中有以下類似的存儲(chǔ)過(guò)程:Create proc newuserunamevarchar(100)AsDeclare ucount intSelect ucount=count(*) from usersIf ucount5000Insert into USers(uname) values(uname)e1Se-提示(tsh)VIP用戶(yngh)活動(dòng)已經(jīng)結(jié)束,會(huì)員已滿go當(dāng)大量用戶并發(fā)運(yùn)行該存儲(chǔ)過(guò)程時(shí)就會(huì)出現(xiàn)(chxin)注冊(cè)成功的會(huì)員數(shù)目大于5000的情況,因?yàn)?/p>
41、有多個(gè)會(huì)員能夠同時(shí)得到系統(tǒng)當(dāng)前的用戶(yngh)數(shù),而產(chǎn)生多個(gè)用戶同時(shí)插入會(huì)員信息的情況,導(dǎo)致功能的最終錯(cuò)誤。對(duì)于這種情況需要在查詢用戶數(shù)的時(shí)候添加(tin ji)查詢鎖來(lái)防止查詢功能的并發(fā)操作。性能測(cè)試進(jìn)行的時(shí)間好比幾年前功能測(cè)試剛剛起步,其實(shí)就是一次出廠驗(yàn)貨,卻美其名日QA。現(xiàn)在我們知道了功能測(cè)試包括單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試,知道了需要盡可能早地介入測(cè)試,甚至應(yīng)該對(duì)需求進(jìn)行測(cè)試,從而有效地、全方位地保證軟件質(zhì)量。?扁鵲見(jiàn)蔡桓公?是一篇小學(xué)時(shí)的課文,相對(duì)于看病來(lái)說(shuō),軟件測(cè)試也是一種類似的工作,即應(yīng)該及早進(jìn)行診斷及預(yù)防。現(xiàn)在的性能測(cè)試往往都是在工程后期才開(kāi)始進(jìn)行的,就算通過(guò)性能測(cè)試發(fā)現(xiàn)系統(tǒng)
42、的性能已經(jīng)完全無(wú)法到達(dá)預(yù)期的需求,在多數(shù)情況下已經(jīng)于事無(wú)補(bǔ)了。一個(gè)有效的缺陷就是能夠被修復(fù)的缺陷!一個(gè)軟件的缺陷,特別是性能上的缺陷不是簡(jiǎn)單地改改代碼就行。當(dāng)一棟高樓已經(jīng)建到第40層,才發(fā)現(xiàn)地基打得不夠深,沒(méi)方法繼續(xù)往下修建了,而主梁的強(qiáng)度也不夠,這時(shí)除了推倒重建也沒(méi)什么其他有效的方法了。軟件也是如此,當(dāng)后期才發(fā)現(xiàn)存在嚴(yán)重的性能問(wèn)題時(shí),再想修正它的本錢和難度相對(duì)功能問(wèn)題來(lái)說(shuō)要大很多。接著來(lái)看看理想情況下性能測(cè)試應(yīng)該在哪些階段介入,如圖1.4所示。圖1.4 性能測(cè)試的進(jìn)行(jnxng)時(shí)間編碼(bin m)階段(壓力(yl)/并發(fā)(bngf)在編碼階段,當(dāng)每個(gè)函數(shù)、方法、存儲(chǔ)過(guò)程被開(kāi)發(fā)(kif)
43、出來(lái)并通過(guò)單元測(cè)試后,都應(yīng)該進(jìn)行壓力和并發(fā)測(cè)試,確認(rèn)接口和被測(cè)對(duì)象能否健壯地處理極端情況,并且能否正確處理并發(fā)請(qǐng)求。在大多數(shù)情況下,這個(gè)階段的性能測(cè)試都是開(kāi)發(fā)人員自行負(fù)責(zé)。而作為一個(gè)架構(gòu)設(shè)計(jì)師,在設(shè)計(jì)軟件時(shí)即應(yīng)該考慮整個(gè)系統(tǒng)的性能,并進(jìn)行建模測(cè)試,確保設(shè)計(jì)的正確。隨后程序員對(duì)架構(gòu)進(jìn)行實(shí)現(xiàn)時(shí)就需要對(duì)自己編寫的代碼進(jìn)行并發(fā)測(cè)試和壓力測(cè)試。編碼一測(cè)試之間(容量測(cè)試)在系統(tǒng)編碼完成時(shí),應(yīng)該及時(shí)進(jìn)行容量測(cè)試,確認(rèn)系統(tǒng)能否滿足在指定容量下的性能需求。例如導(dǎo)入5年的歷史數(shù)據(jù)量,檢查在這種容量下系統(tǒng)的性能是否可以接受,進(jìn)一步再構(gòu)造未來(lái)5年的數(shù)據(jù)量,檢查系統(tǒng)是否正常工作。測(cè)試階段(負(fù)載/配置/基準(zhǔn))在進(jìn)入測(cè)試階
44、段之后,在確保功能正確實(shí)現(xiàn)后需要進(jìn)行負(fù)載測(cè)試,得到系統(tǒng)在當(dāng)前(dngqin)硬件及軟件環(huán)境下的性能指標(biāo)(響應(yīng)(xingyng)時(shí)間、吞吐量、資源利用率),進(jìn)一步形成性能數(shù)據(jù)(shj)基準(zhǔn),然后通過(guò)配置測(cè)試進(jìn)行性能瓶頸的定位和優(yōu)化。在負(fù)載(fzi)測(cè)試后可以得到系統(tǒng)的性能,如果該結(jié)果滿足用戶需求,那么(n me)可以考慮結(jié)束性能測(cè)試,也可以考慮進(jìn)一步進(jìn)行配置和基準(zhǔn)測(cè)試,定位系統(tǒng)中的性能瓶頸,并進(jìn)行進(jìn)一步的優(yōu)化。1.2.2 性能指標(biāo)前面了解了什么是性能,無(wú)視性能會(huì)帶來(lái)什么結(jié)果以及什么是性能測(cè)試,那么性能測(cè)試到底要測(cè)什么呢?在討論軟件的性能指標(biāo)之前,請(qǐng)思考一下汽車和家用電腦的性能指標(biāo)是通過(guò)什么數(shù)據(jù)來(lái)
45、說(shuō)明的。對(duì)于一個(gè)應(yīng)用系統(tǒng)來(lái)說(shuō),我們所需要監(jiān)控的性能指標(biāo)主要有以下3點(diǎn):響應(yīng)時(shí)間響應(yīng)時(shí)間反映完成某個(gè)業(yè)務(wù)所需要的時(shí)間。例如從單擊登錄按鈕到登錄完成返回登錄成功頁(yè)面需要消耗1秒鐘,那么就說(shuō)這個(gè)操作的響應(yīng)時(shí)間是1秒。在性能測(cè)試中是通過(guò)事務(wù)函數(shù)來(lái)完成對(duì)響應(yīng)時(shí)間的統(tǒng)計(jì),事務(wù)是指做某件事情的操作,事務(wù)函數(shù)會(huì)記錄開(kāi)始做這件事情和該事情做完之間的時(shí)間差,使用Transaction Response Time這個(gè)詞來(lái)說(shuō)明,也稱為事務(wù)響應(yīng)時(shí)間。吞吐量吞吐量反映單位時(shí)間內(nèi)能夠處理的事務(wù)數(shù)目。例如對(duì)于系統(tǒng)來(lái)說(shuō)一個(gè)用戶登錄需要1秒鐘,如果系統(tǒng)同時(shí)支持10個(gè)用戶登錄,且響應(yīng)時(shí)間是1秒鐘,那么系統(tǒng)的吞吐量就是10個(gè)秒。在性
46、能測(cè)試工具中,吞吐量也被稱為TPS(Transaction Per Second,每秒事務(wù)數(shù))也就是說(shuō)在單位時(shí)間內(nèi)能完成的事務(wù)數(shù)目。TPS的計(jì)算一般是通過(guò)的事務(wù)數(shù)除以時(shí)間。效勞器資源占用效勞(xio lo)器資源占用反映在負(fù)載下系統(tǒng)的資源利用率。資源的占用越低,說(shuō)明系統(tǒng)越優(yōu)秀。資源并不僅僅指運(yùn)行系統(tǒng)的硬件,而是支持(zhch)整個(gè)系統(tǒng)運(yùn)行程序的一切軟硬件平臺(tái)。在性能測(cè)試中,我們需要監(jiān)控系統(tǒng)在負(fù)載下的硬件或者軟件(run jin)上各種資源的占用情況,例如CPU的占用率、內(nèi)存(ni cn)使用率、查詢cache命中率等。對(duì)于一個(gè)終端用戶來(lái)說(shuō),最關(guān)心的指標(biāo)只有響應(yīng)時(shí)間,如果響應(yīng)時(shí)間長(zhǎng)了,那么用戶就
47、會(huì)覺(jué)得系統(tǒng)慢。用戶并不關(guān)心有多少人使用這個(gè)系統(tǒng)以及系統(tǒng)的資源是不是足夠,所以從某個(gè)角度來(lái)說(shuō),性能測(cè)試必須(bx)保證在任意情況下終端用戶使用的操作響應(yīng)時(shí)間不大于5秒。有調(diào)查統(tǒng)計(jì),對(duì)于一個(gè)用戶來(lái)說(shuō),如果訪問(wèn)某系統(tǒng)的響應(yīng)時(shí)間小于2秒,那么用戶會(huì)感覺(jué)系統(tǒng)很快,比擬滿意;如果訪問(wèn)某系統(tǒng)的響應(yīng)時(shí)間在25秒,那么用戶可以接受,但是對(duì)速度有些不滿;如果某系統(tǒng)的響應(yīng)時(shí)間超過(guò)10秒,用戶將無(wú)法接受。所以對(duì)于一個(gè)系統(tǒng)來(lái)說(shuō),需要盡可能保證每一個(gè)操作的響應(yīng)時(shí)間在5秒以內(nèi),當(dāng)然某些特殊的操作可能會(huì)大大超出這個(gè)響應(yīng)時(shí)間,可以通過(guò)Loading Bar的方式來(lái)提前告訴用戶。1.2.3 性能分析及調(diào)優(yōu)性能測(cè)試的目的是為了發(fā)現(xiàn)
48、性能瓶頸并解決。性能分析是為了確定導(dǎo)致性能瓶頸的原因,而調(diào)優(yōu)就是用來(lái)解決性能瓶頸。通過(guò)某些手段來(lái)讓系統(tǒng)的性能得到提升是性能調(diào)優(yōu)的主要目的。性能分析主要有以下兩種方法:指標(biāo)達(dá)成法將測(cè)試結(jié)果與用戶需求進(jìn)行比擬,如果到達(dá)用戶需要那么測(cè)試通過(guò)。1系統(tǒng)滿足10萬(wàn)注冊(cè)用戶(其中活潑用戶數(shù)為1萬(wàn))訪問(wèn);2系統(tǒng)處理能力:20個(gè)注冊(cè)秒、45個(gè)并發(fā)瀏覽秒、30個(gè)登錄操作秒;3效勞器資源利用率在滿負(fù)荷的情況下,忙時(shí)峰值CPU負(fù)載不超過(guò)75,內(nèi)存占用不超過(guò)80。例如:需要(xyo)對(duì)一個(gè)參加(cnji)100米跑的選手在比賽(bsi)前進(jìn)行性能測(cè)試,確保其能獲得冠軍,那么首先需要明確第一名所需要到達(dá)(dod)的性能(
49、xngnng)目標(biāo)(100米短跑總時(shí)間),對(duì)其進(jìn)行性能測(cè)試,當(dāng)發(fā)現(xiàn)測(cè)試結(jié)果能夠到達(dá)冠軍所具備的條件后,性能測(cè)試即可結(jié)束。最優(yōu)化分析法通過(guò)分析并消除系統(tǒng)性能瓶頸,使系統(tǒng)的處理能力最大化,系統(tǒng)資源實(shí)現(xiàn)充分利用。例如:需要對(duì)一個(gè)參加100米跑的選手進(jìn)行技術(shù)指導(dǎo),并不在乎他是否能夠拿到冠軍,而是重點(diǎn)強(qiáng)調(diào)能否提升自己的比賽成績(jī),那么就需要進(jìn)行系統(tǒng)的訓(xùn)練和指導(dǎo),如標(biāo)準(zhǔn)起跑動(dòng)作、強(qiáng)化肌肉及協(xié)調(diào)性等,最終實(shí)現(xiàn)運(yùn)動(dòng)成績(jī)的提高。對(duì)應(yīng)的性能調(diào)優(yōu)方法也分為兩大方向,如圖15所示。圖15性能調(diào)優(yōu)方向1應(yīng)用程序診斷應(yīng)用程序的診斷是性能測(cè)試的最初目的。通過(guò)模擬多用戶操作形成負(fù)載,檢驗(yàn)應(yīng)用程序是否能夠滿足用戶性能需求。如果不
50、能滿足,那么定位應(yīng)用瓶頸,并尋找解決該瓶頸的方案,確保系統(tǒng)在修正后能夠滿足用戶需求。對(duì)于一個(gè)工程來(lái)說(shuō),一般都以應(yīng)用診斷為主。2系統(tǒng)調(diào)優(yōu)性能測(cè)試的目的不是為了滿足用戶,而是超越自己,這個(gè)時(shí)候需要做的是讓系統(tǒng)能夠比以前更加優(yōu)秀地運(yùn)行,通過(guò)生成負(fù)載,對(duì)測(cè)試結(jié)果進(jìn)行分析,并且準(zhǔn)備大量的軟硬件環(huán)境進(jìn)行迭代測(cè)試,找出影響性能的要素,最終提升系統(tǒng)的性能。一般產(chǎn)品都會(huì)采用系統(tǒng)調(diào)優(yōu)的方式來(lái)逐步完善系統(tǒng)性能。常見(jiàn)的性能瓶頸有如下一些(yxi)情況:1硬件(yn jin)上的性能瓶頸一般(ybn)指的是CPU、RAM方面(fngmin)的問(wèn)題,分為效勞(xio lo)器硬件瓶頸、網(wǎng)絡(luò)瓶頸(對(duì)局域網(wǎng)可以不考慮)、效勞
51、器操作系統(tǒng)瓶頸(參數(shù)配置)、中間件瓶頸(參數(shù)配置、數(shù)據(jù)庫(kù)、Web效勞器等)、應(yīng)用瓶頸(SQL語(yǔ)句、數(shù)據(jù)庫(kù)設(shè)計(jì)、業(yè)務(wù)邏輯、算法等)。例如:確定了在數(shù)據(jù)庫(kù)效勞器上需要6個(gè)CPU、12GB內(nèi)存。但是在測(cè)試時(shí),發(fā)現(xiàn)CPU的持續(xù)利用率超過(guò)95,這時(shí)可以認(rèn)為在硬件上出現(xiàn)了性能瓶頸。2應(yīng)用軟件上的性能瓶頸一般指的是應(yīng)用效勞器、Web效勞器等應(yīng)用軟件,還包括數(shù)據(jù)庫(kù)系統(tǒng)。例如:在WebLogic平臺(tái)上配置了JDBC連接池的參數(shù),最大連接數(shù)為50,最小連接數(shù)為5,增加量為10。在測(cè)試時(shí)發(fā)現(xiàn),當(dāng)負(fù)載增加時(shí),現(xiàn)有的連接數(shù)缺乏,系統(tǒng)會(huì)動(dòng)態(tài)生成10個(gè)新的連接,導(dǎo)致交易處理的響應(yīng)時(shí)間大大增加。這時(shí)可以認(rèn)為在應(yīng)用軟件上出現(xiàn)了
52、性能瓶頸。3應(yīng)用程序上的性能瓶頸一般指的是開(kāi)發(fā)人員新開(kāi)發(fā)出來(lái)的應(yīng)用程序。例如:某程序員開(kāi)發(fā)了一個(gè)繳費(fèi)處理程序。在測(cè)試時(shí)發(fā)現(xiàn),這個(gè)繳費(fèi)處理程序在處理用戶的并發(fā)繳費(fèi)請(qǐng)求時(shí),只能串行處理,無(wú)法并行處理,導(dǎo)致繳費(fèi)交易的處理響應(yīng)時(shí)間非常長(zhǎng),這時(shí)可以認(rèn)為在應(yīng)用程序上出現(xiàn)了性能瓶頸。4操作系統(tǒng)上的性能瓶頸一般指的是Windows、UNIX、Linux等操作系統(tǒng)。例如:在Windows操作系統(tǒng)中,對(duì)某軟件進(jìn)行性能測(cè)試,出現(xiàn)物理內(nèi)存缺乏時(shí),如果虛擬內(nèi)存設(shè)置也不合理,虛擬內(nèi)存的交換效率就會(huì)大大降低,從而導(dǎo)致行為的響應(yīng)時(shí)間大大增加。這時(shí)可以認(rèn)為在操作系統(tǒng)上出現(xiàn)了性能瓶頸。5網(wǎng)絡(luò)設(shè)備上的性能瓶頸一般指的是防火墻、動(dòng)態(tài)
53、負(fù)載均衡器、交換機(jī)等設(shè)備。例如:在動(dòng)態(tài)負(fù)載均衡器上設(shè)置了動(dòng)態(tài)分發(fā)負(fù)載的機(jī)制,當(dāng)發(fā)現(xiàn)某個(gè)應(yīng)用效勞器上的硬件資源已經(jīng)到達(dá)極限時(shí),動(dòng)態(tài)負(fù)載均衡器將后續(xù)的交易請(qǐng)求發(fā)送到其他負(fù)載較輕的應(yīng)用效勞器上。在測(cè)試時(shí)發(fā)現(xiàn),動(dòng)態(tài)負(fù)載均衡機(jī)制沒(méi)有起到相應(yīng)的作用,這時(shí)可以認(rèn)為在網(wǎng)絡(luò)設(shè)備上出現(xiàn)了性能瓶頸。性能瓶頸出現(xiàn)的原因及其定位是十分復(fù)雜的,這里只是簡(jiǎn)單介紹一下常見(jiàn)的幾種瓶頸類型和特征,而性能測(cè)試所需要做的就是根據(jù)各種情況因素綜合考慮,然后(rnhu)協(xié)助開(kāi)發(fā)人員一起定位性能瓶頸。一般性能問(wèn)題(wnt)調(diào)優(yōu)的步驟Step1 確定(qudng)問(wèn)題應(yīng)用程序代碼:在通常(tngchng)情況下,很多程序的性能問(wèn)題都是寫出來(lái)
54、的,因此對(duì)于發(fā)現(xiàn)瓶頸的模塊(m kui),應(yīng)該首先檢查一下代碼。數(shù)據(jù)庫(kù)配置:數(shù)據(jù)庫(kù)配置經(jīng)常引起整個(gè)系統(tǒng)運(yùn)行緩慢,一些諸如Oracle的大型數(shù)據(jù)庫(kù)都是需要DBA進(jìn)行正確的參數(shù)調(diào)整才能投產(chǎn)的。操作系統(tǒng)配置:操作系統(tǒng)配置不合理也可能引起系統(tǒng)瓶頸。硬件設(shè)置:硬盤速度、內(nèi)存大小等都是容易引起瓶頸的原因,因此這些都是分析的重點(diǎn)。網(wǎng)絡(luò):網(wǎng)絡(luò)負(fù)載過(guò)重導(dǎo)致網(wǎng)絡(luò)沖突和網(wǎng)絡(luò)延遲。Step2 確定原因當(dāng)確定了問(wèn)題之后,我們要明確這個(gè)問(wèn)題影響的是響應(yīng)時(shí)間吞吐量,還是其他問(wèn)題?是多數(shù)用戶還是少數(shù)用戶遇到了問(wèn)題?如果是少數(shù)用戶,這幾個(gè)用戶與其他用戶的操作有什么不同?系統(tǒng)資源監(jiān)控的結(jié)果是否正常?CPU的使用是否到達(dá)極限?I/
55、O情況如何?問(wèn)題是否集中在某一類模塊中?是客戶端還是效勞器出現(xiàn)問(wèn)題?系統(tǒng)硬件配置是否夠用?實(shí)際負(fù)載是否超過(guò)了系統(tǒng)的負(fù)載能力?是否未對(duì)系統(tǒng)進(jìn)行優(yōu)化?通過(guò)這些分析以及一些與系統(tǒng)相關(guān)的問(wèn)題,可以對(duì)系統(tǒng)瓶頸有更深入的了解,進(jìn)而分析出真正的原因。Step3 確定調(diào)整目標(biāo)和解決方案提高系統(tǒng)吞吐量;縮短響應(yīng)時(shí)間;更好地支持并發(fā)。Step 4 測(cè)試解決方案對(duì)通過(guò)解決方案調(diào)優(yōu)后的系統(tǒng)進(jìn)行基準(zhǔn)測(cè)試。Step 5 分析調(diào)優(yōu)結(jié)果系統(tǒng)(xtng)調(diào)優(yōu)是否到達(dá)(dod)或者(huzh)超出了預(yù)定目標(biāo)?系統(tǒng)是整體性能(xngnng)得到了改善,還是以犧牲某局部(jb)性能來(lái)解決其他問(wèn)題。調(diào)優(yōu)是否可以結(jié)束了?最后,如果到達(dá)了
56、預(yù)期目標(biāo),調(diào)優(yōu)工作就根本可以結(jié)束了。性能問(wèn)題分析原那么原那么1:把事實(shí)與推測(cè)分開(kāi),總是用實(shí)際的證據(jù)來(lái)證明你的推測(cè)。原那么2:在沒(méi)有足夠證據(jù)之前,不對(duì)程序進(jìn)行優(yōu)化。原那么3:優(yōu)先驗(yàn)證簡(jiǎn)單的假設(shè)。原那么4:日志文件中沒(méi)有錯(cuò)誤并不代表真的沒(méi)有錯(cuò)誤。原那么5:從系統(tǒng)到應(yīng)用、從外到內(nèi)進(jìn)行層層剝離,縮小范圍。確認(rèn)是系統(tǒng)級(jí)問(wèn)題還是應(yīng)用級(jí)問(wèn)題;確認(rèn)是否為外部系統(tǒng)問(wèn)題(如密碼鑒權(quán)問(wèn)題、EJB問(wèn)題等);確認(rèn)是應(yīng)用程序問(wèn)題還是數(shù)據(jù)庫(kù)問(wèn)題。原那么6:范圍縮小后,再分割成多個(gè)小單元,對(duì)每個(gè)小單元反復(fù)進(jìn)行壓力測(cè)試,來(lái)確定是哪個(gè)單元引起性能問(wèn)題。診斷性能問(wèn)題,最常見(jiàn)的也是較難的判斷的問(wèn)題是:是應(yīng)用程序還是數(shù)據(jù)庫(kù)出了問(wèn)題?或
57、者兩者都有?這是因?yàn)閼?yīng)用程序、數(shù)據(jù)庫(kù)、WebLogic Server(Tomcat)都不是孤立運(yùn)轉(zhuǎn)的。因此脫離應(yīng)用架構(gòu)單獨(dú)運(yùn)行測(cè)試(如SQL計(jì)時(shí)、JDBC計(jì)時(shí)、線程計(jì)時(shí)等)幾乎沒(méi)有作用。關(guān)鍵是對(duì)相互作用的了解。要熟知系統(tǒng)的性能度量方法,了解SQL的結(jié)構(gòu),了解用戶發(fā)出的請(qǐng)求在跨越整個(gè)系統(tǒng)時(shí)的端對(duì)端點(diǎn)對(duì)點(diǎn)計(jì)時(shí)、SQL的計(jì)時(shí)等;了解用戶發(fā)出請(qǐng)求后所關(guān)聯(lián)的線程、JDBC連接、數(shù)據(jù)庫(kù)的活動(dòng)及其之間的交互關(guān)系。應(yīng)用數(shù)據(jù)庫(kù)典型的三大類性能問(wèn)題分析如下。1過(guò)量的數(shù)據(jù)庫(kù)調(diào)用問(wèn)題:常見(jiàn)的性能瓶頸來(lái)自過(guò)量的數(shù)據(jù)庫(kù)調(diào)用,引發(fā)這些問(wèn)題不一定是SQL查詢的Execute()或Update(),而是應(yīng)用程序與數(shù)據(jù)庫(kù)的交互有
58、關(guān),例如Result Set操作,常見(jiàn)的問(wèn)題是指定了過(guò)于精細(xì)的查詢條件,然后使用Result SetNext()詳細(xì)搜尋返回的數(shù)據(jù)。解決方法:從數(shù)據(jù)庫(kù)中大量取得所要求的數(shù)據(jù),防止應(yīng)用程序反復(fù)回調(diào)數(shù)據(jù)庫(kù)。2數(shù)據(jù)庫(kù)連接池問(wèn)題(wnt)問(wèn)題(wnt)1:連接池資源(zyun)泄漏雖然(surn)可以通過(guò)WebLogic自帶工具(gngj)、Jprofiler工具或自編工具檢測(cè)到數(shù)據(jù)庫(kù)連接池資源泄漏,但是很難在應(yīng)用程序代碼本身準(zhǔn)確定位泄漏的源頭!解決方法:仔細(xì)分析程序代碼,是否沒(méi)有close()連接?是否遺漏了finally塊?或者盡管有close()但并沒(méi)有成功?問(wèn)題2:連接池大小連接池過(guò)小會(huì)導(dǎo)致連
59、接池滿后,新的客戶無(wú)法連接上系統(tǒng),在日志中出現(xiàn)錯(cuò)誤信息。一般的解決方法是增大連接池。但另一方面,連接池過(guò)大會(huì)造成資源無(wú)效損耗,可能會(huì)出現(xiàn)新的性能問(wèn)題,那么連接池調(diào)到多大比擬適宜呢?解決方法:經(jīng)驗(yàn)法那么1:數(shù)據(jù)庫(kù)連接池?cái)?shù)=線程池?cái)?shù)每個(gè)線程需要連接數(shù)據(jù)庫(kù)的平均數(shù)x1.1(1.1的含義是增加10的峰值期負(fù)載),通常每個(gè)線程需要連接數(shù)據(jù)庫(kù)的平均數(shù)是1,即當(dāng)線程池?cái)?shù)為120時(shí),數(shù)據(jù)庫(kù)連接池?cái)?shù)就是132。經(jīng)驗(yàn)法那么2:設(shè)置最初池大小=最大池大小。3:SQL語(yǔ)句及其索引或鎖定屬性問(wèn)題問(wèn)題:SQL語(yǔ)句及其索引或鎖定屬性不合理可能引發(fā)DISK IO過(guò)忙(磁盤讀寫數(shù)據(jù))或者CPU過(guò)忙(在內(nèi)存中索引排序),造成執(zhí)行
60、時(shí)間過(guò)長(zhǎng),阻塞線程的執(zhí)行,最終引發(fā)系統(tǒng)掛起或者執(zhí)行超時(shí)引發(fā)系統(tǒng)掛起,例如錯(cuò)誤信息:Oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2857) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate死鎖引發(fā)系統(tǒng)掛起,例如錯(cuò)誤信息:Java.sql.SQLException:ORA-00060:Deadlockdetectedwhilewaitingforresourceatoracle.jdbc.dbaccess.DBError
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)自動(dòng)化技術(shù)的新進(jìn)展與應(yīng)用案例分析
- 工業(yè)領(lǐng)域環(huán)保技術(shù)的前沿與發(fā)展
- 工業(yè)設(shè)計(jì)與環(huán)境保護(hù)的關(guān)系
- 工作中的口頭與書面溝通技巧
- 工作場(chǎng)所靈活性與效率關(guān)系探討
- 工作場(chǎng)所的綠色環(huán)保理念與實(shí)踐
- 工作模式變革下的人才培養(yǎng)計(jì)劃
- 工程數(shù)學(xué)中的建模與計(jì)算方法
- 工程機(jī)械中焊接結(jié)構(gòu)的耐久性優(yōu)化
- 工程建筑中的綠色節(jié)能技術(shù)應(yīng)用研究
- GB 13561.1-2009港口連續(xù)裝卸設(shè)備安全規(guī)程第1部分:散糧筒倉(cāng)系統(tǒng)
- 學(xué)院輔導(dǎo)答疑情況記錄表
- 2022年小學(xué)二年級(jí)下冊(cè)數(shù)學(xué)評(píng)價(jià)方案
- Q∕SY 1470-2012 員工健康體檢規(guī)范
- 教師英語(yǔ)口語(yǔ)訓(xùn)練課件(完整版)
- 風(fēng)生水起博主的投資周記
- XXXXX智能化弱電施工組織計(jì)劃
- TK校驗(yàn)儀的使用
- 北京市中小學(xué)教師崗位考核登記表(表樣)
- 血栓性淺靜脈炎
- 棄渣場(chǎng)施工及方案
評(píng)論
0/150
提交評(píng)論