您好,登錄后才能下訂單哦!
經過一段時間的連續(xù)連續(xù)加班,持續(xù)大概4個月的性能測試項目終于要結束了,現在想想,各種酸甜苦辣都有吧
本次項目我作為一個專職的性能測試人員,我比較幸運,我和其他功能測試人員同時入場了,入場之后,功能測試人員都在忙著熟悉需求、編寫測試案例,而我在熟悉需求的同時編寫性能測試計劃、測試方案以及測試案例,順便忙里偷閑跟著功能測試組學習informatica如何使用,ETL如何測試,畢竟這部分以前沒有接觸過,順便幫功能測試組干點活,就這樣,一個月過去了,性能測試設備到位了,開始安裝環(huán)境,一共四臺機器,搭建過環(huán)境的朋友都知道,安裝手冊主要是提供思路,想按照安裝手冊一帆風順的裝下去那幾乎是不可能,中間遇到了很多問題,通過百度、求助別人,大概用了8個工作日,環(huán)境搭建完成了,接著就是開發(fā)測試腳本,這個過程還算順利,不順利的情況在測試執(zhí)行的時候出現了,當測試執(zhí)行多用戶并發(fā)是,發(fā)現只要超過20個用戶登陸,數據庫CPU使用率就到90%左右(當時用的可是32C 64G的機器),難道32C 64G的機器不能支持20個虛擬用戶的并發(fā),大概測試了20個功能點都這樣,如果這個問題不解決,后面的混合場景、穩(wěn)定性測試、浪涌測試、疲勞測試、容量測試都無法進行,此時距上線大概只有兩周時間了,測試組著急,開發(fā)組在修復缺陷的同時也派人專門支持性能測試、開發(fā)組在整個過程中也檢查自己是否加了索引,也針對這些功能點重建了索引,行方的質量經理也很著急,雖然大家都很著急,但是問題還沒有解決,行方請來了數據中心的數據庫維護人員,請來的第一位女大俠進行簡單的分析以后,把SGA由之前的12G調整到16G以后忙自己的事情去了,讓我們重新測試,說要是還有問題就把報告打出來,我們經過測試發(fā)現此問題還在,第二天晚上加班的時候又請了一位數據中心的人進行診斷,診斷的結果就是oralce啟用了很多進程,和其它并發(fā)用戶相同的系統比較,其他系統沒有這么多的進程,至于CPU使用率為什么這么高,暫時還是沒有答案,在此過程中,我在網上進行了各種資料的查詢(那時候白天在客戶現場不能上班,只能晚上回來查詢了,記錄下來,第二天去檢查測試環(huán)境是否存在類似的問題),學習了oracle的共享服務器模式還是專有服務器模式,以及網上有人說的一些配置文件的查看,還是沒有解決問題,那時候懷疑可能是安裝問題還是配置文件出問題,因為當時的想法就是請了兩個數據中心的人都沒診斷出問題,那指定不是一般問題,也不是小問題(現在想想,那時候太崇拜技術大拿了),最后抱著試一試的心態(tài)在網上在看看,最后通過這樣一個sql語句解決了問題
select sql_text,spid,v$session.program,process from v$sqlarea,v$session,v$process where v$sqlarea.address=v$session.sql_address and v$sqlarea.hash_value=v$session.sql_hash_value and v$session.paddr=v$process.addr and v$process.spid in(PID);
首先使用topas查到消耗CPU比較高的進程,然后獲取進程的ID,講進程id扔在上述sql語句的PID進程處,執(zhí)行該sql語句,最后抓到了一個sql語句,對sql語句進行了分析,分析了sql語句的執(zhí)行計劃,發(fā)現執(zhí)行了全表掃面,而且這個sql語句同時從4張表的查詢語句,那這個語句是干嘛的,為什么測試的每個功能點都用用到呢?難道是平臺框架的?也不像???
登陸系統,發(fā)現登陸完成以后,首頁有好多種提示信息/待辦事宜(類似于個貸系統提示客戶貸款到期、貸款逾期的這種待辦事宜)這下大家恍然大悟了,為什么每個功能點都有類似的問題,只要你登陸完成,系統就會自動查詢,當多用戶并發(fā)時,由于sql語句不當的執(zhí)行計劃導致消耗了更高的CPU,這個問題終于解決了,很開心,這也是自己動手解決的第一個性能問題,以前只是協助定位,系統如期上線了,難道就結束了了嗎?沒有
第一:為什么開發(fā)明確說加了索引最后還是索引的問題呢,個人覺得主要是項目周期比較緊,開發(fā)流程控制不嚴格,按照開發(fā)組的說法在后面要重建索引,但是性能測試要進行性能測試,他們對大部分功能點表添加了索引,忽略了首頁提醒信息/待辦事宜的幾張表
第二:數據中心的人為什么沒有檢查索引的問題呢?太相信開發(fā)了,因為這些開發(fā)大多數都有10年的工作經驗,所以大家對開發(fā)的話深信不疑。
第三:數據中心的人為什么沒有直接打出AWR或者statspack報告而直接調整了SGA呢?也許他們太忙了還是有別的原因,我們不得而知。
第四:為什么數據中心的第二位大拿發(fā)現oracle數據庫啟動了那么多進程而并發(fā)用戶差不多的另一個系統卻沒有呢,我們系統使用了專有服務器,而另一個系統使用了共享服務器。
通過這個問題,我想說,第一大家不要過分崇拜技術大牛而藐視自己,第二不要百分之百相信開發(fā)組或者其他人的話,雖然他們經驗很豐富、你可以表面上相信,但是別忘了實踐時間出真理 第三、發(fā)現問題,一定要監(jiān)控、拿出數據報告說話、畢竟推斷和猜測還是有區(qū)別的。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。