WEB性能測(cè)試與性能調(diào)優(yōu)總結(jié)_第1頁(yè)
WEB性能測(cè)試與性能調(diào)優(yōu)總結(jié)_第2頁(yè)
WEB性能測(cè)試與性能調(diào)優(yōu)總結(jié)_第3頁(yè)
WEB性能測(cè)試與性能調(diào)優(yōu)總結(jié)_第4頁(yè)
WEB性能測(cè)試與性能調(diào)優(yōu)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、前段時(shí)間,我們測(cè)試團(tuán)隊(duì)對(duì)新開發(fā)的一個(gè)數(shù)據(jù)分析系統(tǒng)進(jìn)行性能測(cè)試與優(yōu)化工作,期間遇到不少問題,并分析解決問題。系統(tǒng)從開始的50用戶并發(fā)都不滿足,優(yōu)化到最終可以支持500以上并發(fā),性能提升至少10倍以上,感覺很有成就感。在此,把整個(gè)經(jīng)歷過程給大家分享一下,文檔是對(duì)自己這次性能測(cè)試進(jìn)行一次總結(jié)。經(jīng)過一個(gè)多月的性能測(cè)試,收獲還是很大的,當(dāng)然,由于自己經(jīng)驗(yàn)方面不足,定位時(shí)間花費(fèi)比較長(zhǎng),效率有些低。因此,寫了這篇總結(jié)文檔,分享下,大家一起進(jìn)步,也希望對(duì)更多的測(cè)試人員在性能測(cè)試上有所幫助。一、準(zhǔn)備:局域網(wǎng)搭建測(cè)試環(huán)境,系統(tǒng)主要模塊,SSO登陸、數(shù)據(jù)報(bào)表頁(yè)面查看、地圖展示指標(biāo)數(shù)據(jù)、大數(shù)據(jù)分析與結(jié)果報(bào)表展示。系統(tǒng)

2、主要是J2EE、后臺(tái)數(shù)據(jù)庫(kù)使用Oracle與hadoop。目標(biāo)是測(cè)試該系統(tǒng)能否支持500用戶同時(shí)并發(fā),每個(gè)頁(yè)面或局部刷新響應(yīng)時(shí)間在2秒左右,且長(zhǎng)時(shí)間運(yùn)行穩(wěn)定,也是對(duì)系統(tǒng)性能的一次摸底,找出性能瓶頸并優(yōu)化使用瀏覽器代理方式,輸入首頁(yè)地址 HYPERLINK http:/xxxx http:/xxxx由于我們有SSO登陸,因此跳到登陸頁(yè)面,輸入用戶名與密碼。然后進(jìn)入首頁(yè),首頁(yè)有地圖,有報(bào)表,類似下圖:三、生成腳本通過“錄制快照”來查看頁(yè)面HTTP請(qǐng)求,了解我們系統(tǒng)的頁(yè)面結(jié)構(gòu),頁(yè)面時(shí)間,即正常瀏覽器點(diǎn)擊到頁(yè)面顯示的時(shí)間,每個(gè)HTTP的時(shí)間與內(nèi)容長(zhǎng)度。這點(diǎn)也是挺重要的,開始對(duì)工具不熟,錄制后調(diào)通腳本就

3、直接測(cè)試,結(jié)果發(fā)現(xiàn)測(cè)試結(jié)果有成功有失敗,測(cè)試結(jié)果報(bào)告提示腳本時(shí)間比錄制大,但不知道怎么分析;另外測(cè)試發(fā)現(xiàn)有些請(qǐng)求時(shí)間很大,已經(jīng)超過10幾秒。然后,測(cè)試過程中多次請(qǐng)教了工具的支持人員后,對(duì)工具有所了解,也是一些性能測(cè)試經(jīng)驗(yàn)知識(shí)。TPS(TransactionPerSecond)即事務(wù),事務(wù)是很重要的。我們測(cè)試的其中一個(gè)腳本錄制的頁(yè)面有2個(gè)頁(yè)面,一個(gè)ajax局部刷新請(qǐng)求,性能測(cè)試要從用戶的角度來看,即每個(gè)頁(yè)面完成需要在用戶可以忍受的時(shí)間內(nèi),網(wǎng)上說一般是2秒內(nèi)認(rèn)為正常,5秒內(nèi)有點(diǎn)慢但還可以接受;ajax局部刷新也要在合理的時(shí)間。因此,在支持人員的指導(dǎo)下,為腳本配置了3個(gè)事務(wù),2個(gè)頁(yè)面分別事務(wù),一個(gè)叫

4、login、一個(gè)叫main,然后也對(duì)ajax請(qǐng)求配置事務(wù)report;這樣通過工具的統(tǒng)計(jì)信息,就可以單獨(dú)分析login、main與report3個(gè)事務(wù)的成功與失敗,事務(wù)響應(yīng)時(shí)間是否合理,在合理范圍內(nèi)則表示測(cè)試通過,如果響應(yīng)時(shí)間大則需要考慮是否合理。1、錄制快照配置了3個(gè)事務(wù)后,通過錄制快照來分析事務(wù)的情況4斫靶呻.色=題Z昨皿Lq(SS:l0ffl4IMS鼻滋-wekit!ao)e:ifta海刖事詢衛(wèi)出:所環(huán)mB*ai可it眸在料應(yīng)-方科斬npfrwii計(jì)UELdrLfl0a0wFnzIfl錨1呂FaanfhFx訂打皆inrtlm5Ntj叮卻訂(41-HllFi期ImL掃嚨g口舛infjsii

5、fo/l阮蘆p-Tif色i闋I(yíng)IEQ-tiniiiQirr-B.&.jiCS-HTTEa期ja沁tfti&Se=Ti!3*pirjiiJfirifMpi=ini.-3L3E1jxCET-HTTTl200ji412345IB3陽(yáng)E/鈿屮屮Ubrfp冋CET-HTTTl2aaEBHITK491B37/rihM+L1HrFClni#il旳:ECET-HTITlanBIH-!49IB3IDmi;CET-HTTTl200dCECM245IB3II払甲屮中2中匈prq;CET-HTTTlXMEfl葉l-U491B3CET-HTTTlBIH-n:49IB3113騎護(hù)事吾J.r.aaMK畔衿Inaa035rK

6、THnrl2ME逛忖3M44KD0-IE-CET-HTTTlM4l-U4QCC0B11CETXU137斗SCDC綁BfCETS2Vlfi2LL4KMSIIS加irgm皿畑r吃CETJO2Vlfi41.1.4K1I班:D/idlyc.;jieheeI曲E-nrWM:EC9EDU-HA0CETM2EfakW34G4SC12-irElrxksi詢r(jià)rlnCET2M血LnLT7JKUD5可以看到每個(gè)事務(wù)包括了那些請(qǐng)求,該事務(wù)錄制時(shí)花了多長(zhǎng)時(shí)間,這個(gè)時(shí)間是測(cè)試結(jié)果報(bào)告里的錄制參照值,測(cè)試結(jié)果報(bào)告的事務(wù)時(shí)間跟這個(gè)值對(duì)比就知道是否時(shí)間合理。同時(shí),可以看到腳本包括多少個(gè)HTTP請(qǐng)求,后臺(tái)請(qǐng)求有多少個(gè)、圖片有多

7、少個(gè),主要時(shí)間花費(fèi)在哪里;每個(gè)事務(wù)包括多少個(gè)HTTP請(qǐng)求,多少個(gè)服務(wù)器,哪個(gè)服務(wù)器占用時(shí)間比較大。申E飛、-IIo!:e-:.-fr:ic-ite-iOXMM.(L;l0li?直D.乂比.CM*hW.$0014.CN1()QCMl.BDfiO(1)事奇列羔所有喧認(rèn)迅二、訕口Orepra-t檢廡!UP衣可能存在生個(gè)頁(yè)面!建謖対毎個(gè)頁(yè)面逵一t葫卜方損后面測(cè)試時(shí),發(fā)現(xiàn)很多問題,也是通過錄制快照來分析頁(yè)面結(jié)構(gòu),發(fā)現(xiàn)請(qǐng)求太多、有些Q重復(fù)(96)請(qǐng)求沒有進(jìn)行緩存(快照的重復(fù)有96個(gè))、圖片與JS請(qǐng)求太多,后面進(jìn)行了合并減少了http請(qǐng)求,也提高了成功率和事務(wù)時(shí)間。另外,通過快照里的“并發(fā)時(shí)間圖”來查看每個(gè)

8、事務(wù)瀏覽器是怎么并發(fā)的,是串行一個(gè)一個(gè)發(fā)送HTTP請(qǐng)求,還是并行多個(gè)發(fā)送HTTP請(qǐng)求。這個(gè)也非常重要,因?yàn)?,開始測(cè)試時(shí),沒有選擇模擬瀏覽器并發(fā),測(cè)試出來的事務(wù)時(shí)間非常大,有的達(dá)到幾十秒,比正常瀏覽器點(diǎn)擊頁(yè)面時(shí)間2,3秒時(shí)間大很多。后來咨詢了工具的支持人員,才知道有并發(fā)跟串行的說法,下圖可以看到,瀏覽器基本是并發(fā)執(zhí)行請(qǐng)求的,后來網(wǎng)上了解了瀏覽器并發(fā)原理,還有通過瀏覽器的F12的網(wǎng)絡(luò)分析也發(fā)現(xiàn)確實(shí)是同時(shí)并發(fā)HTTP請(qǐng)求的。聽工具支持人員說,好像現(xiàn)在其他測(cè)試工具是不支持一個(gè)虛擬用戶并發(fā)HTTP請(qǐng)求的,以前用loadrunner也沒去研究,不過好像確實(shí)測(cè)試的時(shí)間總比正常瀏覽器訪問要大。這個(gè)后面再確認(rèn),

9、如果真是這樣的話,那確實(shí)工具這點(diǎn)挺好的;因?yàn)槊總€(gè)用戶的并發(fā)與瀏覽器一樣,對(duì)服務(wù)器的壓力就基本類似,測(cè)試的結(jié)果響應(yīng)時(shí)間也真實(shí)反映每個(gè)用戶的情況,如果是串行的話,時(shí)間大了也不知道怎么分析。2、腳本調(diào)試腳本錄制后,開始測(cè)試前需要對(duì)腳本進(jìn)行調(diào)試?;胤拧㈥P(guān)聯(lián)、參數(shù)化、驗(yàn)證腳本;通過工具提供的幫助知道文檔和支持人員的交流,腳本順利調(diào)試通過,也通過后臺(tái)數(shù)據(jù)庫(kù)和工具的驗(yàn)證頁(yè)面功能查看,腳本通過。OK,下面開始性能測(cè)試和結(jié)果分析、調(diào)優(yōu)了。第一階段測(cè)試開始沒配置login、main與report3個(gè)事務(wù),也沒配置模擬瀏覽器并發(fā),調(diào)試通過后就直接跑,可能是自己對(duì)性能測(cè)試經(jīng)驗(yàn)不足,不知道配置事務(wù)這么重要。同時(shí)并發(fā)50

10、個(gè)用戶,看下怎樣結(jié)果測(cè)試多次的結(jié)果,有時(shí)都成功,有時(shí)存在2,3個(gè)用戶失敗,但腳本執(zhí)行時(shí)間居然80%以上達(dá)到將近50秒,2個(gè)頁(yè)面一個(gè)ajax局部刷新,正常使用瀏覽器時(shí),也才幾秒,應(yīng)該不可能達(dá)到這么大啊。測(cè)試時(shí),自己使用瀏覽器訪問頁(yè)面,有時(shí)地圖加載失敗,有時(shí)成功,頁(yè)面出來也比平常慢。懵了,怎么定位呢,經(jīng)驗(yàn)嚴(yán)重不足。先從工具提示與統(tǒng)計(jì)來分析,再加上請(qǐng)教了工具的支持人員,也學(xué)到了一些分析方法。工具匯總報(bào)告如下:自定事務(wù)時(shí)聞過長(zhǎng)事箱一檢嗥頁(yè)面無一牛我期糰血事掘時(shí)rsi應(yīng)當(dāng)屬足“曠曠屮舸畀鈕討日護(hù)篦孚氐関戶棟豔葺c削高、SMfsitaputtara.ntw密、漲u/o他基萄縣掰詞陸特他響樓時(shí)間協(xié)如舉不Sc

11、FijSttfflfi因.雨:樂煤1加11飜因可遠(yuǎn)在血理応啟flT+硏陽(yáng)戶詳軸轄息加4倚用戶的SfimTflt處懇審券的時(shí)iHlrra出來遊打并析冷從舌哇:tittw業(yè)imr?js歡導(dǎo)測(cè)i底嗣減下ifi列犁爭(zhēng)努屋光時(shí)閭比錄制的時(shí)閘犬謝的常BL*3Miffl*SWlE自己握按自貝業(yè)券舟?tut時(shí)麗)ift大M7531441TC卩連樓R匕土丄F眥十瓷|iiC?ir卩吊颶孑區(qū)*S可irtWTC?世乂汕I;UTCPitAJW|吐口.iiV-A-i-tlA:JRMmsrafeAU伶-irttiflJLIfc好濡、已礙、蘇打加?觀I彷導(dǎo)M.?。憾∪髩c#注丄刃問的Z%J仞rre三逾推手ffieiBSefr

12、ttSKi.4S查看“用戶詳情”的“用戶與事務(wù)統(tǒng)計(jì)”如下:可以發(fā)現(xiàn)80%用戶總時(shí)間達(dá)到47秒左右,但錄制時(shí)使用瀏覽器整個(gè)時(shí)間才7820毫秒,即錄制值,相差非常大。查看“腳本請(qǐng)求統(tǒng)計(jì)”分析HTTP請(qǐng)求,如下圖:查看每個(gè)HTTP請(qǐng)求的統(tǒng)計(jì)信息,最大響應(yīng)時(shí)間、90%、80%時(shí)間。這里支持點(diǎn)擊列排序即可以找出時(shí)間最大的HTTP請(qǐng)求有哪些。IJSi!1rpyEKTi.ijlba.pifLtrinwULl|o|44331Z5H!131Q51di轉(zhuǎn)斤畔山廿前專躍jlpn.p!.a.e-jw.j0.l:砂EEfid固BBI日H*WMI*用尸褲船語(yǔ)MHWtoT,小略汙HETr.CTObftJirl4SI_彌詢|

13、iLlR的|丄田|丄1傳尺方古石Ittfci.MB;BfJiff比疋x柵曾fti-114千均me錄細(xì)0wi山求點(diǎn)擊“詳細(xì)分析”F謹(jǐn)塑旗查看更細(xì)分的統(tǒng)計(jì),可以按域名、HTTP類型等分析其中,訪問google有兩個(gè)請(qǐng)求時(shí)間比較長(zhǎng),另外,界面下面給出域名占總時(shí)間比例還是比較大,因此可以確認(rèn)訪問google是一個(gè)瓶頸點(diǎn),工具用到google地圖。在“腳本請(qǐng)求統(tǒng)計(jì)”界面的滾動(dòng)條拉下來可以看到,有哪些請(qǐng)求失敗,失敗原因是什么,下面是50用戶都成功時(shí)的統(tǒng)計(jì),顯示TCP建立時(shí)間超過3秒,表示這些請(qǐng)求響應(yīng)時(shí)間太大,應(yīng)該是TCP建立時(shí)間長(zhǎng)導(dǎo)致。如果這里有其他失敗,也可以看到統(tǒng)計(jì),很方便分析。根據(jù)根據(jù)分析,初步確認(rèn)

14、google的請(qǐng)求時(shí)間比較大,那為什么會(huì)大呢,需要定位找原因并解決,由于自己在性能測(cè)試經(jīng)驗(yàn)上欠缺,問了工具的客服人員,說可能是網(wǎng)絡(luò)原因,匯總報(bào)告里也提示建立TCP時(shí)間長(zhǎng)可能是網(wǎng)絡(luò)原因。OK,咨詢我們的網(wǎng)絡(luò)人員,網(wǎng)絡(luò)人員給了個(gè)Ping如下:正在Ping HYPERLINK 0具有32字節(jié)的數(shù)據(jù):來自0的回復(fù):字節(jié)=32時(shí)間=542ms來自0的回復(fù):字節(jié)=32時(shí)間=420ms來自0的回復(fù):字節(jié)=32時(shí)間=511ms來自0的回復(fù):字節(jié)=32時(shí)間=480ms發(fā)現(xiàn)測(cè)試環(huán)境到google服務(wù)器的網(wǎng)絡(luò)時(shí)延比較大,達(dá)到500多毫米。另外,分析訪問SSO服務(wù)器的HTTP也時(shí)間也比其他HTTP長(zhǎng),但比google

15、時(shí)間要小一些。網(wǎng)絡(luò)人員給出的解釋是,因?yàn)楣揪W(wǎng)絡(luò)到SSO服務(wù)器和到google服務(wù)器的帶寬比較小,而且是辦公網(wǎng)絡(luò),當(dāng)前是辦公時(shí)間,大家都在使用網(wǎng)絡(luò)oSSO服務(wù)器網(wǎng)絡(luò)原因解決辦法比較容易,讓網(wǎng)絡(luò)人員對(duì)測(cè)試環(huán)境的網(wǎng)絡(luò)做一些配置;而google響應(yīng)慢與開發(fā)交流,先不理,后面可能會(huì)專門開發(fā)個(gè)緩存代理,不用每次都去google訪問。所以,測(cè)試腳本中把google的HTTP請(qǐng)求刪除掉,目前測(cè)試我們自己服務(wù)器,先不管google。五、第二階段測(cè)試為腳本配置了3個(gè)事務(wù),目的是從事務(wù)的響應(yīng)時(shí)間來分析頁(yè)面或局部刷新的時(shí)間是否合理;2個(gè)頁(yè)面分別事務(wù),一個(gè)叫l(wèi)ogin、一個(gè)叫main,然后也對(duì)ajax請(qǐng)求配置事務(wù)re

16、port;前面通過修改網(wǎng)絡(luò)和刪除google地圖相關(guān)HTTP請(qǐng)求,響應(yīng)時(shí)間提升了10多秒。但還是40秒左右,離我們目標(biāo)每個(gè)頁(yè)面2-5秒范圍相差很大。測(cè)試過程在同事電腦上使用瀏覽器訪問頁(yè)面,也還是很慢,證明系統(tǒng)可能有瓶頸。怎么優(yōu)化呢,第二階段與第三階段性能測(cè)試耗時(shí)最長(zhǎng)的優(yōu)化就是這階段,也是最具有挑戰(zhàn)性的階段。發(fā)現(xiàn)了很多問題,通過優(yōu)化,性能提升很大。網(wǎng)上查資料、看論壇,大概意思就可能是網(wǎng)絡(luò)原因、數(shù)據(jù)庫(kù)原因、CPU、內(nèi)存的;OK,在測(cè)試時(shí)添加服務(wù)器監(jiān)控,在工具controller界面添加服務(wù)器、數(shù)據(jù)庫(kù)內(nèi)存與CPU監(jiān)控,配置添加monitor監(jiān)控器設(shè)置工具E運(yùn)行削幫甌H)G日-林砒理器Alt4-A蛀f

17、熠器Ctrl+AltfM媒匍謹(jǐn)器Ctrl+Alttl國(guó)直Ctrl+Alt4-ESeripterAnalysis%網(wǎng)存可用空間*內(nèi)存已用空間%內(nèi)存已用空間交械區(qū)讀取的總更頊*讀取的忌可放隰寫廐的總頁(yè)頊*寫九的總可埶飜交換區(qū)可用空間$交扭區(qū)可用空間交攜區(qū)已用空間ftCPU占用聿$用戶占用奉%至貌占用聿$由斷莖備注%CFir占用奉CFHTot-al內(nèi)存可用空間MenoryTotal運(yùn)行結(jié)果發(fā)現(xiàn)tomcat的CPU與內(nèi)存很低,但數(shù)據(jù)庫(kù)CPU在查詢時(shí)有點(diǎn)彪升,因?yàn)轫?yè)面涉及到地圖數(shù)據(jù)、報(bào)表數(shù)據(jù)都需要訪問數(shù)據(jù)庫(kù)。通過工具詳情分析里的HTTP后臺(tái)動(dòng)態(tài)類型分析,部分HTTP請(qǐng)求時(shí)間比較大與開發(fā)交流,開發(fā)團(tuán)隊(duì)給出

18、了解決方案,增加redis緩存,把一些常用不改變的數(shù)據(jù),如地圖邊界、常用報(bào)表在tomcat啟動(dòng)時(shí)就加載到緩存,另外,把數(shù)據(jù)庫(kù)查詢結(jié)果保存到緩存,如果是一樣的查詢語(yǔ)句,則直接從緩存讀取,減少到數(shù)據(jù)庫(kù)查詢,提高效率,終于把后臺(tái)數(shù)據(jù)庫(kù)查詢的HTTP請(qǐng)求時(shí)間降下來。六、第三階段測(cè)試1、腳本修改為模擬瀏覽器并發(fā)上面通過redis緩存解決了后臺(tái)數(shù)據(jù)庫(kù)并發(fā)性能差的問題,響應(yīng)時(shí)間得到大幅下降,總的響應(yīng)從40多秒時(shí)間降到20秒左右,3個(gè)事務(wù)響應(yīng)時(shí)間分別在6,9,5左右。多次測(cè)試仍然還是20秒,但測(cè)試過程使用瀏覽器訪問頁(yè)面都正常,頁(yè)面出來時(shí)間也大概1,2秒時(shí)間。經(jīng)驗(yàn)不行,不懂怎么辦了。此次測(cè)試是摸底系統(tǒng)是否可以支

19、持500用戶數(shù)并發(fā),即頁(yè)面訪問都成功、而且每個(gè)頁(yè)面或局部刷新響應(yīng)時(shí)間在2-5秒范圍內(nèi);現(xiàn)在每個(gè)HTTP請(qǐng)求,都比較合理,與錄制值比較相差不大,但每個(gè)事務(wù)時(shí)間在8秒左右,總時(shí)間20秒左右,以為系統(tǒng)無法支持500用戶;咨詢工具支持人員,原來腳本沒配置“模擬瀏覽器并發(fā)”,然后啟用“模擬瀏覽器并發(fā)”終于把時(shí)間降下來,降到10秒左右,login事務(wù)對(duì)應(yīng)頁(yè)面、main事務(wù)對(duì)應(yīng)頁(yè)面,局部刷新事務(wù)report的響應(yīng)時(shí)間都在3秒左右,正常范圍,50個(gè)用戶通過。為什么要“模擬瀏覽器并發(fā)”,問了工具的支持人員,原理大概是我們使用瀏覽器訪問頁(yè)面時(shí)是并發(fā)的,可以通過瀏覽器的F12調(diào)試工具的網(wǎng)絡(luò)查看頁(yè)面的HTTP請(qǐng)求;網(wǎng)

20、上搜索了下,好像一個(gè)域名可以同時(shí)并發(fā)6個(gè)請(qǐng)求,那我們系統(tǒng)有多個(gè)域名,至少6個(gè)并發(fā)以上;如果沒有配置“模擬瀏覽器并發(fā)”工具執(zhí)行腳本時(shí)是串行一個(gè)一個(gè)HTTP執(zhí)行,那當(dāng)然比正常瀏覽器慢。另外,工具串行500個(gè)并發(fā)比瀏覽器500個(gè)并發(fā)壓力不是一個(gè)量級(jí),可能相差好幾倍。如252輛車(252個(gè)HTTP請(qǐng)求)要到達(dá)目的的,一個(gè)是一車道(串行)還堵車(阻塞),一個(gè)是6車道(并行),時(shí)間差別很大,對(duì)服務(wù)器壓力也差別大。2、逐步提高并發(fā)用戶從并發(fā)50用戶數(shù),慢慢提升到并發(fā)100、150、200、250、300、400、500用戶數(shù)。當(dāng)運(yùn)行到150時(shí),出現(xiàn)腳本執(zhí)行時(shí)間變大,最小有10秒左右,但大部分在15秒,也出現(xiàn)

21、TCP建立時(shí)間超過3秒,類似上面開始測(cè)試時(shí),google的HTTP請(qǐng)求響應(yīng)時(shí)間大。但自己在并發(fā)測(cè)試時(shí)使用瀏覽器訪問,頁(yè)面顯示正常,可能比平時(shí)稍微慢點(diǎn)點(diǎn),但也沒那么明顯,因此感覺是工具問題。工具報(bào)告提示:TCP琲接祥吐址曲陶卡確如crnn.囚韜可ict建丘時(shí)間唯過乩nt除示恒人可吐存?Isnr包去養(yǎng)羞啟i*檢査址駅毎器Mh砂帆9MK節(jié)導(dǎo)政的-MF三枚握手建業(yè)舸圖車北世=調(diào)據(jù)KPFfiffl+iS立AJ間禺過益口掙的曲爺戀查看“腳本請(qǐng)求統(tǒng)計(jì)”分析HTTP請(qǐng)求,沒有特定HTTP比較慢,而是整體響應(yīng)時(shí)間都大了,有一些小的CSS文件也比較慢,如下圖:也可以看到大文件的“首個(gè)接收分片”比較快,但后面的剩余

22、數(shù)據(jù)接收時(shí)間比50用戶時(shí)要大,如下圖苦埠方吿TCfL暉Lel3.Lro|150IM3E|vq|5M1在百度里搜索,還有咨詢了支持人員,發(fā)現(xiàn)這種現(xiàn)象一般是網(wǎng)絡(luò)延時(shí),帶寬不足或CPU太大問題。根據(jù)工具提示的匯總報(bào)告,也表示可能是CPU高、網(wǎng)絡(luò)擁塞;查看服務(wù)器CPU,才8%CPU,那應(yīng)該是網(wǎng)絡(luò)問題,但我現(xiàn)在是在局域網(wǎng)里面,網(wǎng)絡(luò)很好,而且自己使用瀏覽器訪問正常感覺不可能是網(wǎng)絡(luò)問題。后面注意到匯總報(bào)告有一個(gè)吞吐量告警:吞吐量/秒(1Mbps=128KB)TWIbpr*m=8T5OKE長(zhǎng)應(yīng)用層倆吐比底懇TCTF至夕占上荷ttE千啦碼可簾吿警,輙色到軸隋可靛導(dǎo)蝕TW立朱敗、It跑刪國(guó)Hfc、懸*5以在皿曰擰

23、惡rtg辜單退銀出起a-SWMES.卄甌刪帝?顧鰥時(shí)間點(diǎn)、-t-ift.彌査理孫器”屋頑毎,dmr那齡o紬謖襪湖查看了工具所在機(jī)器的網(wǎng)卡,是100Mbit網(wǎng)卡,服務(wù)器是1000Mbit網(wǎng)卡,即瓶頸在工具所在電腦的網(wǎng)卡。50用戶總吞吐量為56750KB(約56MB),即每個(gè)用戶吞吐量大約1.1MB,對(duì)服務(wù)器每秒的壓力是56MB/10秒=5.6MB,換算成比特,就是44Mbit/秒,那么150用戶就大約130Mbit,超過網(wǎng)卡極限。咨詢了工具支持人員,他告訴我解決辦法有兩個(gè),一個(gè)是采用多個(gè)agent執(zhí)行器分布式執(zhí)行,這樣可以避免網(wǎng)卡瓶頸;另一個(gè),他看了腳本錄制快照后,發(fā)現(xiàn)我們腳本HTTP請(qǐng)求太多,

24、重復(fù)也太多,給我建議需要優(yōu)化頁(yè)面,可以采用緩存,減少HTTP個(gè)數(shù)、壓縮文件、合并文件(圖片、CSS、JS)。因此在網(wǎng)上找找這方面的資料,在網(wǎng)上看了很多文檔:例如 HYPERLINK /article/20140118/535246.shtml /article/20140118/535246.shtml從工具“錄制快照”看到,一個(gè)腳本里面有96個(gè)重復(fù)HTTP請(qǐng)求,總共有252請(qǐng)求重復(fù)里面點(diǎn)擊URL排序可以看到有些CSS、圖片重復(fù)多次,如下:H應(yīng)碼類fl!醫(yī)舉JD/iDLdtT/csE/bm.csserr2WC55J5T5T|jQ1仏.小此匕CSLstrECOCEE15T67!5/itidtic

25、/cESLib-i-sic.ceeJIT2WCS53113T/iDLdjU/CE.S./b-uic.CSETWCEE閔】:12jinJ占*r.丿eEE/Lacee応SCOflEE4Q2SQ3fiDLd4KFcs7L4加Iat.essstraoCEEQKB-!EE.i1indax/l/milTorJIT2td顯片3404:典findjU畑御玄心苗丄.PTeSETW3ILH-J3E.i1iadax.!1arikir-aiZ-nsajoifGET2D03Uii54/:1鈕小4阿/58JTi;割2C0an3*01!G5.i1iridax.11miiK-fTOrjETEDO3U4i69GETKCam19

26、1.i1iadax.!1arikir-aiZ-nsajoifGET2D03Ui:93riadtri1dr時(shí)m/e話】JIT2W駅3*0*11.i1iridax.11miiK-fi/icanxB.priL.pnp:GETEDO9DH33:翟yiddflci1t.pnc5IT2W90319jiadjui1arikE-iaJlvKv.cL.Ctf.putITEDOq卿:51點(diǎn)口如丿訕時(shí)裁101|師pnfJIT2WCSS、JS、圖片多次請(qǐng)求,而且都返回一樣的內(nèi)容,即一個(gè)文件請(qǐng)求了多長(zhǎng),如果使用緩存,則可以減少CSS、圖片的下載。另外,按字節(jié)大小進(jìn)行排序,可以看到一個(gè)地圖相關(guān)的HTTP請(qǐng)求內(nèi)容長(zhǎng)度達(dá)到近

27、340KB,內(nèi)容格式為json,而且沒有壓縮;js文件達(dá)到455KB,也沒壓縮。從測(cè)試結(jié)果看到,該請(qǐng)求響應(yīng)時(shí)間也比較大;平尸丁:afh-,“、r.nDT*J-3E*L扭嗨胛本砸沁呻斑,斟刪呵面發(fā)空竺方相嬸與aIJKL方注戔型商ftMT-北5的T53l/LndcKi1GET1啟臺(tái)動(dòng)宏3T39|把當(dāng)前問題告訴開發(fā)負(fù)責(zé)人,開發(fā)負(fù)責(zé)人也意識(shí)到這些會(huì)影響性能,整改頁(yè)面結(jié)構(gòu)與代碼。3、整改頁(yè)面結(jié)構(gòu)經(jīng)過整改,為tomcat增加了緩存、壓縮JS、后臺(tái)代碼壓縮json、合并很多小文件。重新錄制頁(yè)面腳本,發(fā)現(xiàn)HTTP請(qǐng)求總數(shù)從252減少到104個(gè),減少了近150個(gè)HTTP請(qǐng)求;JS與json壓縮率也非常高,340

28、KB的json數(shù)據(jù),經(jīng)過壓縮后,只占約8K,壓縮比驚人。再次測(cè)試,50個(gè)用戶由之前的10秒左右,降到近5秒多,3個(gè)事務(wù)的時(shí)間也都在1-2秒左右;當(dāng)并發(fā)150個(gè)用戶腳本執(zhí)行時(shí)間也在6秒左右;性能提升還是比較大的。為防止測(cè)試工具的執(zhí)行器Agent瓶頸,后面測(cè)試使用了兩個(gè)執(zhí)行代理器local與linux分布式測(cè)試。薩kylinPETController-edit*|文件(F)卻S)工Am運(yùn)行貳幫助(H)町鄆囲宣用戶諾時(shí)體華I-斟範(fàn)NUlZj丄疋4碎lirnutsk進(jìn)箜理留植型矚程室煙軍r謹(jǐn)率/理1總托戶數(shù):co點(diǎn):沁S始央行辛尸站運(yùn)連率-?nri立即運(yùn)行所勻住戸運(yùn)-亍芫悟止運(yùn)行L衣則傳匕再次遞增用戶

29、200個(gè),也是近6秒多,3個(gè)事務(wù)的時(shí)間也都在2秒左右,還算正常;遞增到500個(gè)時(shí),腳本響應(yīng)時(shí)間明顯加大,有部分用戶時(shí)間已經(jīng)達(dá)到12秒,更有達(dá)到15秒以上,也出現(xiàn)用戶失敗,出現(xiàn)部分JS或圖片訪問失敗,失敗日志如下:oxi:3:aLoci!srrcrhopetluq-60sbutiQrvorcLozatcjtin=&DD2ns.thtip:/000:13:431O:41trrcrhopeime=60sbu.1servarclosetcptine=6003nsj.thtip:/1000:13:49errwhup亡11ms=60sbutaerrercLqsctcjLlinie=&DD4nshttp:0

30、00:13:43localerrorhopetine=EOslbutserverclosetertine=6003nslathttp:/om:i3:4alocilirrorhopeline=6Ckbutarvarclosatrptina二5999nsithtip:/0:3:-53Loci!srrorhopetLmQ-60sbutiQrraircLoeqteptints6000ns.thtip:/000:13:43!:iltrrcrLh&peime=60sbutzerv-trcloseteptine=&0Xnsja.thttp:/1000:19:49Localerrorh.Dpeiiine=6O

31、3butserverclozetcjiI.lime=&0D1nsaAhi.ip:/hopetine=492e!tutservercloseteptime=GXGnsathtti:?JOKI:13:4aLotalirrorhopetine-238ebuteArverclosbteptiraa-A002ncb.tlittp:oxi:3:aLocLsrrcrhppe:tLinG=60sbutsflrvsrcLoetc;tin-s=&0Z1nshtip:/000:13:48lo:41errorLhopeime=60sbutservercloseteptine=6024nsj.thtip:/日志大概意思

32、是服務(wù)器在發(fā)送HTTP請(qǐng)求后的6秒左右關(guān)閉了TCP連接,所以沒收到HTTP請(qǐng)求的響應(yīng),導(dǎo)致用戶失敗。測(cè)試時(shí)使用瀏覽器訪問,確實(shí)頁(yè)面出來慢了很多,有時(shí)也頁(yè)面出不來,應(yīng)該是服務(wù)器問題。工具給出的匯總報(bào)告有如下告警:眼務(wù)賽主動(dòng)關(guān)閉TCP3Wf:沁I和i潮日苗-族*#析出觀1L-.liWIJH禍感l(wèi)l耐是衲J昏汗-咨詢支持人員,從經(jīng)驗(yàn)看應(yīng)該是CPU太大或者線程池、連接池不夠,導(dǎo)致HTTP請(qǐng)求無法處理,tomcat服務(wù)器主動(dòng)關(guān)閉TCP。看了服務(wù)器的CPU,服務(wù)器CPU有8核,CPU只占20%左右,應(yīng)該不是CPU原因;但查看數(shù)據(jù)庫(kù)所在的CPU比較高。奇怪呢,數(shù)據(jù)庫(kù)高應(yīng)該只影響訪問數(shù)據(jù)庫(kù)的HTTP請(qǐng)求才對(duì),

33、怎么連圖片或JS也失敗呢。最后,我們開發(fā)團(tuán)隊(duì)一位牛人,通過java的dump日志,發(fā)現(xiàn)是線程阻塞了,數(shù)據(jù)庫(kù)訪問太大,導(dǎo)致線程都阻塞在等數(shù)據(jù)庫(kù)的響應(yīng),無法再處理其他HTTP請(qǐng)求,包括圖片與JS。解決辦法,提高數(shù)據(jù)庫(kù)連接池個(gè)數(shù),提高tomcat線程池大小,同時(shí)配置阻塞為非阻塞NI0:4、調(diào)整線程池、數(shù)據(jù)庫(kù)連接池配置完后再次500個(gè)并發(fā)用戶多次測(cè)試,總的腳本響應(yīng)時(shí)間與3個(gè)事務(wù)響應(yīng)時(shí)間都在正常范圍,終于支持500并發(fā)用戶數(shù)了。當(dāng)然,由于我們腳本錄制時(shí)請(qǐng)求都沒包括緩存頭域,正常用戶訪問時(shí),部分圖片或JS、CSS請(qǐng)求瀏覽器已經(jīng)緩存了,所以正常的500用戶并發(fā)對(duì)服務(wù)器的壓力應(yīng)該比腳步500并發(fā)要小些,因?yàn)椴?/p>

34、分圖片或JS、CSS不需要再請(qǐng)求。到此,已經(jīng)可以支持500用戶了,后面還需要進(jìn)行穩(wěn)定性長(zhǎng)時(shí)間測(cè)試。七、第四階段穩(wěn)定性測(cè)試一個(gè)用戶完成腳步大概7秒時(shí)間,因此每秒啟動(dòng)70個(gè)用戶,保證后面近500用戶同時(shí)在線長(zhǎng)時(shí)間測(cè)試穩(wěn)定性也是很重要,此次測(cè)試期間發(fā)生過redis緩存掛了、tomcat內(nèi)存溢出、1、redis緩存掛了長(zhǎng)時(shí)間運(yùn)行近50分鐘后,發(fā)現(xiàn)后面的用戶都失敗了。從測(cè)試統(tǒng)計(jì)結(jié)果與日志提示發(fā)現(xiàn)失敗原因是服務(wù)器返回500響應(yīng),失敗的HTTP請(qǐng)求為訪問數(shù)據(jù)庫(kù)的HTTP請(qǐng)求。此時(shí),使用瀏覽器訪問系統(tǒng),頁(yè)面也出不來,無法正常顯示。后來,查詢服務(wù)器發(fā)現(xiàn)redis進(jìn)程不存在,多次測(cè)試都這樣,開發(fā)定位說是內(nèi)存問題,

35、同時(shí)也暴露了redis單點(diǎn)問題,架構(gòu)上需要考慮主備。2、幾小時(shí)后失敗用戶數(shù)遞增Redis內(nèi)存問題解決后,在長(zhǎng)時(shí)間運(yùn)行4個(gè)多小時(shí),發(fā)現(xiàn)失敗用戶數(shù)占約5%點(diǎn)擊“用戶詳情”分析結(jié)果如下:失敗類型基本是跟TCP連接相關(guān),也存在接收超時(shí)查看“失敗用戶圖”,失敗用戶基本在4小時(shí)(14000秒)后uioaajioo曲皿斗應(yīng)m甸rioo加oo即血卵訕1曲3lijooujoo13血:心iboE4-jCCb.i42iXj00D+/mo3W/WMMFJ3DDifiCh/JOUhSiv/raIMUJDUIW/W艸Irr靈i12U/JWIMFjCmRCLOW20/jDDmit|g1昨iw-w-即酣膽b1費(fèi)m;k:5KM

36、OTC03巾叫rm失敗類型為“TCP建立失敗”“服務(wù)器關(guān)閉TCP導(dǎo)致無響應(yīng)”也基本是發(fā)生在4小時(shí)后n:rB.Odtftl1413V*I2MJIM*IW3IMMimn札in.-rwwiin.?nn11.?12.喚12.i?.nm17.H.rwwiH.1?.:那么運(yùn)行到4小時(shí)后發(fā)生什么情況導(dǎo)致失敗用戶數(shù)遞增呢查看了在線數(shù),發(fā)現(xiàn)0秒到3小時(shí)50分時(shí)比較平穩(wěn),大概在740個(gè)用戶,但到了4小時(shí)的時(shí)候,在線用戶數(shù)飆升到3000多,對(duì)系統(tǒng)造成的壓力遠(yuǎn)大于正常,所以腳本失敗與響應(yīng)時(shí)間都增大。放大圖表,可以看到3小時(shí)之后基本都在3000多在線用戶數(shù)運(yùn)行多次長(zhǎng)時(shí)間運(yùn)行,必會(huì)出現(xiàn)這種情況,后面一位開發(fā)牛人分析發(fā)現(xiàn)是

37、阻塞與jvmfullgc垃圾回收頻繁導(dǎo)致。檢查了數(shù)據(jù)庫(kù)SQL語(yǔ)句性能,發(fā)現(xiàn)有些沒添加主鍵,日期格式是字符串格式,導(dǎo)致效率差;部分SQL語(yǔ)句通過SQL執(zhí)行計(jì)劃分析發(fā)現(xiàn)篩選條件不合理。從而導(dǎo)致腳本執(zhí)行時(shí)間長(zhǎng),然后又由于新用戶一直在遞增,所以就出現(xiàn)老用戶還沒結(jié)束新用戶又增加導(dǎo)致在線用戶數(shù)達(dá)到3000多。解決思路,系統(tǒng)部署環(huán)境由只有一個(gè)tomcat改為Ngnix+tomcat,把靜態(tài)的CSS、JS、圖片、HTML放到Ngnix,Ngnix啟用緩存;把動(dòng)態(tài)的HTTP交互交給tomcat處理,這樣減輕了tomcat的壓力與TCP連接。數(shù)據(jù)庫(kù)增加主鍵、修改SQL語(yǔ)句提高查詢效率。3、tomcat也掛了優(yōu)化SQL語(yǔ)句和改

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論