一個資料庫死鎖竟然被測試發現了,這你敢信

京东云开发者發表於2024-03-13

測試生產監控發現資料庫死鎖報錯:org.springframework.dao.DeadlockLoserDataAccessException:

Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found



測試是透過什麼方式發現呢?





還要從前一段時間老劉對我的疑問開始說起。

老劉:理賠系統上線後,不能進行生產驗證,作為測試你要怎麼避免生產問題呢

我:目前對生產的驗證只能聯絡業務人員進行生產驗證

老劉:那我們測試這邊調研一下,看一下有什麼方法

我:好的,我去看一下有沒有適合的集團工具可以對生產異常資料進行統計



就是這樣的一個對話,讓我發現了 EasyBI 工具,和這個工具的緣分就開始了

首先,給大家介紹一個這個工具,它可以做什麼呢?它可以透過連線生產資料庫或者介面開發的形式進行生產資料統計,以聚合表、透視表、柱狀圖、折線圖、雷達圖等進行圖形化配置,並將整個資料情況都彙總到統一的監控排程中心。



那我又是怎麼怎麼使用 EasyBI 工具解決了生產資料監控問題呢

首先,我根據自己系統的業務型別,開發了幾個介面,生產資料異常的介面、生產理賠數量統計介面、生產 TOP5 理賠資料統計介面等

然後,按照 EasyBI 工具使用文件進行了配置,詳細操作請看以下分析

(一)資料接入

把開發的介面在 EasyBI 工具平臺(EasyBI (jd.com))進行配置





(二)應用配置

建立應用,把配置好的介面資料以聚合表、柱狀圖、等進行圖形化配置,以該形式展示監控資料





(三)訂閱管理

配置好應用後,對此應用進行郵件訂閱,定時任務推送生產資料監控的結果





(四)監控資料分析

非車核心理賠資料統計介面:目前分為三類,分別是是錯誤資訊統計介面、周失敗和成功統計介面、日失敗和成功統計介面

◦錯誤資訊統計介面

▪1.1 透過對理賠不同的錯誤資訊進行分類,統計出當天、本週、上週和上上週各個錯誤資訊的個數,透過資料對比能夠及時發現 當前系統的穩定性、理賠資料正確性、業務邏輯校驗合理性

▪1.2 理賠不同的錯誤資訊統計透過 easyBI 平臺明細表分類展示

▪1.3 透過理賠錯誤型別及時判斷是正常業務校驗或者是異常問題





•周失敗和成功統計,日成功和失敗資料介面

▪2.1 針對團險的主流產品、個險的主流產品、理賠系統進行連續一週或者當天的理賠成功資料和錯誤資料統計,透過對比及時發現主流產品理賠業務的正確性,保證客戶理賠的時效性

▪2.2 週資料根據商品計劃在 easyBI 平臺以柱狀圖展示,日資料根據商品計劃在 easyBI 平臺以條形圖展示













開發過程中也會遇到一些問題,那是怎麼解決的呢

問題就是剛開始設計方案時直接透過對理賠資料庫資料進行查詢返回對應的結果,發現介面會出現超時情況,因為理賠錯誤資料統計時需要根據理賠時的保單號查詢承保詳情介面判斷出是對應的商品計劃存在,這個是第三方的介面不受自己控制

改進方案為透過定時任務把需要的資料先儲存到對應的資料庫,然後根據儲存到資料庫的資料進行校驗,以此可以解決介面超時問題



我發現的資料庫死鎖就是透過錯誤資訊統計介面發現的,看到統計出的結果出現

org.springframework.dao.DeadlockLoserDataAccessException:

Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found 這個非正常業務異常資訊



發現後和老劉同步

老劉:哇哦!監控做的不錯

我:會繼續加油的





相關文章