性能测试实战总结
1項(xiàng)目背景
????????人力資源上線初期,由于全省40多個(gè)電業(yè)局臨時(shí)決定同時(shí)集中使用人力資源系統(tǒng),這是開發(fā)初期沒有想到的事情,所以用戶剛剛使用就反映整個(gè)系統(tǒng)速度很慢,項(xiàng)目組和公司領(lǐng)導(dǎo)層高度重視這個(gè)事情,可是究竟慢在什么地方呢?是什么原因引起的慢,面對(duì)一個(gè)這么龐大而復(fù)雜的系統(tǒng),要想找到真正的原因是很難辦到的事情,大家都在懷疑和猜測(cè)著?是硬件問題?還是應(yīng)用服務(wù)器慢?還是數(shù)據(jù)庫服務(wù)器慢呢?圍繞這一系列的疑問,性能測(cè)試工作緊張又有條不紊的展開了,而測(cè)試組擔(dān)負(fù)著性能測(cè)試的主要重?fù)?dān),于是安排舒文林負(fù)責(zé)這個(gè)事情。
????????2測(cè)試流程
????????測(cè)試組接到任務(wù)過后,進(jìn)行一系列的思考,確定了將整個(gè)系統(tǒng)逐步分解的測(cè)試辦法,就是先將系統(tǒng)分成幾個(gè)大塊,應(yīng)用服務(wù)器,數(shù)據(jù)庫服務(wù)器,客戶端程序;然后再將服務(wù)器拆成硬件和軟件;然后逐步將應(yīng)用軟件劃分成若干邏輯層,測(cè)試組舒文林經(jīng)過和項(xiàng)目組溝通過后,首先找?guī)讉€(gè)最慢的功能登陸,分頁,人員子集編輯信息,組織機(jī)構(gòu)查詢。通過80人摸擬以上操作同時(shí)訪問人力資源系統(tǒng),在這樣的情況下,我們發(fā)現(xiàn)壓力主要集中在數(shù)據(jù)庫服務(wù)器上,值得慶興的是,通過觀察應(yīng)用服務(wù)器CPU,內(nèi)存,磁盤,網(wǎng)絡(luò)等資源,一切正常,所以我們排除了應(yīng)用服務(wù)器引起慢的可能,把注意力集中在數(shù)據(jù)庫服務(wù)器上。
????????再觀察數(shù)據(jù)庫服務(wù)器時(shí),我們發(fā)現(xiàn)CPU一直處于100%,磁盤I/O很慢,每秒在283K左右。于是直接想到的是換硬件,開發(fā)組決定更換磁盤陣列卡,將數(shù)據(jù)庫服務(wù)器改成IBM的高檔小型機(jī)。這樣性能得到了一定的提升,但過了不久,用戶又開始有意見了 ,那說明我們現(xiàn)在的系統(tǒng)性能還沒有達(dá)到用戶的要求,公司領(lǐng)導(dǎo)層再次組織進(jìn)行性能測(cè)試,說的是一定要挖掘深層次的原因。
????????于是測(cè)試組又派出了舒文林負(fù)責(zé)人力資源項(xiàng)目的性能測(cè)試,此時(shí)項(xiàng)目組要到了驗(yàn)收的時(shí)候了,這不免無形中給測(cè)試組增加了很大的壓力, 這個(gè)時(shí)候Sybase工程師也來了,怎么辦呢?還是老辦法吧,不過這次我們是先從功能作為分解點(diǎn),先找到最慢的功能,一個(gè)一個(gè)的測(cè)試/首先找到的是登陸,我們把登陸功能按照程序邏輯拆分成若干小的功能,及顯示登陸頁面,權(quán)限驗(yàn)證,加載主菜單、主畫面等,結(jié)果發(fā)現(xiàn)登陸功能最慢的是加載主菜單和權(quán)限驗(yàn)證這兩塊,消耗了整個(gè)登陸功能大部份的時(shí)間,那就給開發(fā)人員找到了優(yōu)化的地方,通過使用高速緩存,建立數(shù)據(jù)庫索引,優(yōu)化SQL,優(yōu)化程序等技術(shù)手段過后,登陸功能性能提升了一半;最大支持用戶數(shù)也由120增加到了200,接下來按照老辦法,開始分頁功能的測(cè)試,由于Sybase使用分頁必須使用臨時(shí)表,先將要分頁的數(shù)據(jù)放到臨時(shí)表,頁面顯示層再從臨時(shí)表里面取出數(shù)據(jù)填充到客戶端顯示,
????????還是先用80個(gè)用戶同時(shí)使用該系統(tǒng)分頁,并重復(fù)迭帶多次,這個(gè)時(shí)候CPU長時(shí)間飽和,客戶端時(shí)間很滿,達(dá)到70秒,先記錄作為基準(zhǔn)測(cè)試。
????????再看數(shù)據(jù)庫的各種指標(biāo),我們發(fā)現(xiàn)數(shù)據(jù)庫有嚴(yán)重的阻塞,終于有了根本性的發(fā)現(xiàn)。Sybase工程師想到通過綁定多個(gè)臨時(shí)表,并通過ASE的同步機(jī)制來保持同步,這樣阻塞問題緩解了,響應(yīng)時(shí)間也由70秒降到了30秒。但是當(dāng)用戶數(shù)增加到120的時(shí)候,數(shù)據(jù)庫CPU又是100%,系統(tǒng)又慢了下來,而且系統(tǒng)其它功能也都慢了下來,我們分析了一下,覺得通過增加多個(gè)臨時(shí)表和多個(gè)臨時(shí)庫,這樣會(huì)不會(huì)帶來額外的CPU開銷呢?肯定會(huì)的,但這個(gè)開銷究竟有好大呢?這是一個(gè)還沒有確定的問題?如果CPU開銷小了,系統(tǒng)性能肯定會(huì)好起來,因?yàn)槟壳熬虲PU是個(gè)瓶勁。
????????這個(gè)時(shí)候,Sybase工程師說他們已經(jīng)做到最優(yōu)化了,而開發(fā)人員也覺得他們?cè)撟龅亩甲隽?#xff0c;那為什么現(xiàn)在系統(tǒng)還慢呢?憑我的經(jīng)驗(yàn),我覺得這筆開銷很大,但我又無法證明這一點(diǎn),Sybase工程師承認(rèn)這需要額外的CPU和內(nèi)存開銷,但究竟多大,也是一個(gè)疑問。為了弄清楚這個(gè)問題,我們選在在同一臺(tái)計(jì)算機(jī)上將分頁的功能做一個(gè)比較,我們拋開應(yīng)用服務(wù)器,通過直接測(cè)試分頁腳本,來比較各自的性能。采取在該服務(wù)器上全新安裝操作系統(tǒng)和必要的軟件,做成Ghost恢復(fù)文件。
????????然后分別測(cè)試Sybase和Oracle,首先安裝Sybase產(chǎn)品,進(jìn)行測(cè)試后,然后用Ghost恢復(fù)系統(tǒng)到初始化環(huán)境,安裝Oracle,采用和Sybase相同的測(cè)試案例進(jìn)行測(cè)試, 并將oracle和Sybase調(diào)整到最優(yōu)化,最后將兩個(gè)測(cè)試結(jié)果匯總,測(cè)試過程忽略不計(jì),結(jié)論是Sybase進(jìn)行翻頁CPU是100,而oracle是25%,Oracle分頁由于有ROWNUM字段,所以不需要使用臨時(shí)表,響應(yīng)時(shí)間都在40秒左右,因?yàn)槲覀冋业挠?jì)算機(jī)很普通,所以時(shí)間長了點(diǎn),所以我們得出Sybase使用臨時(shí)表分頁消耗CPU很大的結(jié)論,人力資源系統(tǒng)性能的測(cè)試和研究在以后的歷程中,任務(wù)將會(huì)更加艱巨,我們完全有信心克服困難,戰(zhàn)勝困難,因?yàn)槲覀円呀?jīng)積累了很多經(jīng)驗(yàn)。?
總結(jié)
- 上一篇: HDU 3264 Open-air sh
- 下一篇: 沉淀