最近專案在做效能測試的時候發現的一系列的資料波動的問題,下面記錄下,以便以後查詢。
波動前後的資料都很穩定,檢視日誌發現在出現問題之後沒有任何日誌打出來,通過ls -sh檢視各個日誌檔案的大小,發現其中乙個日誌檔案208g,把整個home的空間佔滿了,在繼續打日誌的時候打不進去。把該日誌刪除後,重新跑壓力測試,問題消失。
首先排查測試使用的環境引數,沒有問題。懷疑gc等影響,檢視資料發現整個介面響應時間慢並不是因為資料波動導致的,而是一直都很慢,排除掉這個問題。通過visualvm直接連線到效能測試的jvm,檢視介面情況。發現介面呼叫中的一步占用時間超過90%以上,定位到問題在這裡。
通過對該方法的詳細排查,發現內部有乙個資料庫呼叫,不過通常對於乙個幾萬條的資料表進行索引查詢也就幾毫秒,不至於慢到這個程度。再詳細查了一下,發現效能測試庫沒有建對應的索引,不過在測試環境和線上環境都是建好的。
所以,引起這個的原因是索引木有建,建上索引以後資料滿足預期
每5分鐘有一次大範圍波動,排除了full gc、執行緒池大小調整、cache過期、apache配置等問題,最後問題聚焦在新加的乙個jvm監控上面,詳細查詢後發現果然有乙個5分鐘事件。
這裡面會採集thread的資料,呼叫threadmxbean.dumpallthreads(booleanlokcedmonitors, boolean lockedsysnchronizers)方法,傳遞的引數是threadmxbean.dumpallthreads(true,true),需要遍歷所有執行緒的monitor和synchronizer資訊,導致所有的執行緒阻塞(正常情況下不會有這麼明顯的影響,效能測試的時候併發設的是30,每秒的請求數有幾百個,所以影響會大一點)。把引數修改為threadmxbean.dumpallthreads(false,false)即可解決。
資料波動歸因分析
排除工程原因 資料採集 資料傳輸 資料統計 資料演示等過程 時間和空間上的定位 從哪天開始有波動 哪個模組上波動比較厲害 結合業務思考外部因素 我們不能影響 的貢獻,如重大事件 競爭對手的動作等。如果是絕對量資料,考慮該絕對量在業務中所處的環節是 其上游是什麼,上游資料以及轉化率上有哪些波動 整體去...
波動數列 揹包問題
分享分享,收藏收藏 問題描述 觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加a或者減少b的整數數列可能有多少種呢?輸入格式 輸入的第一行包含四個整數 n s a b,含義如前面說述...
mysql jdbc驅動問題
1 建立了乙個j2ee專案。2 將mysql的jdbc驅動拷貝到webcontent web inf lib 目錄下。3 在驅動jar包上點右鍵將jar包新增到構建路徑中。4 然後編寫與資料庫相關的 5 在實現類中新增main方法進行單元測試,各個方法都能正常執行。6 建立jsp頁面在其中建立物件呼...