還是許久之前,開發讓我幫忙看下他們做效能壓測時候的awr報告,說是在做穩定性測試時候發現,隨著時間的推移,cpu使用率會越來越高。
我當時取了兩個小時的awr,通看了一下,覺得資料庫各方面執行的挺好,而且sql語句也沒有超過10ms的,應該是比較理想的系統。後來又取了連續10個小時的awr,分析出來結果也差不多。
於是懷疑是不是虛擬機器有問題,因為我們測試環境的機器都是虛擬機器,懷疑是不是虛擬機器或者作業系統有問題。排查加鼓弄了半天,無所得。
讓開發人員繼續開啟穩定性壓測,我一直觀察cpu使用情況,從早上到晚上下班,cpu使用率確實在緩慢提公升,然後發現oracle單個程序占用的cpu資源也在緩慢的增長。意識到還是出現在oracle資料庫上面了。
重新取了剛開始壓測1個小時和最後乙個小時的awr報告,對比了下top sql語句中的sql,發現同一條sql,隨著時間的推移,邏輯讀也在緩慢增長。豁然開朗了。sql語句存在缺陷,但很小,小到極其容易忽略。後分析sql,發現該sql所涉及的表存在比較嚴重的資料傾斜字段,而且該欄位便是該sql語句的主要謂詞條件,sql語句通過該字段上的索引來獲取資料。
由於該欄位存在較為嚴重的資料傾斜,加上穩定性測試過程中持續向該表中插入資料,導致傾斜度相對越來越大,該字段上的索引效率用來越低,繼而導致sql語句隨著時間的推移,越來越占用cpu。
之所以最初在分析時候覺得sql沒啥問題,那是因為即使sql後來變慢了,也只是從原先微妙級別,變成了幾毫秒,對於awr的sql執行時間粒度而言,依然都是屬於小於10毫秒的,容易造成sql執行很棒的假象。
其實整個分析排查過程做的挺多的,當然,由於之前方向錯了,走了很多冤枉路。也側面說明了,方向上沒出大問題,就沒有大問題。
而我之所以想寫下這個案例,是想告誡自己,不要為表象所迷惑,不要憑以往的經驗草率的得出結論,凡事仍需謹慎細緻。比如,判斷一條sql語句到底有沒有問題,好,列出sql的邏輯讀和物理讀,有沒有變化,是不是持續變化,變化是否符合預期。
系統穩定性測試
簡介 利爾達自主lorawan系統包含lorawan節點 閘道器 ns伺服器三個部分,本次測試針對感測器類終端,定時上報的class a典型應用,驗證系統的工作穩定性。受測產品 節點 lsd4wn 2l817m90 閘道器 lsd4wn 2332xgw1 網路伺服器 lierda 3.0 unico...
軟體測試過程中的度量
在軟體測試過程中,可以將度量分為兩大類 1 衡量測試效率和測試工作量 工作量指標 例如,測試效率評價 測試進度s曲線等.2 從質量 的角度表明測試的結果 結果指標 例如,缺陷 數量 到達模式 系統崩潰和掛起的次數等.測試過程s曲線 追蹤測試過程也許是軟體測試階段管理中最重要的追蹤任務。建議的一種度量...
測試面試過程中的幾點困惑
最近在面試中遇到了很多困惑和無奈,筆者總結了幾條,與諸君分享。順便也談談筆者對面試的一些淺解。困惑二 我覺得 怪圈。很多人在面試的溝通中,非常喜歡用 我覺得 來開始回答問題。因為我比較喜歡用非常具體的場景來提問,那麼在該場景中按照邏輯上來講,必然存在著確切的因果關係或特定的解決方法。如果一切都是 我...