數據庫執行更新失敗,查看日誌sql
首先是根據報的Exception進行排查:數據庫
org.hibernate.exception.LockAcquisitionException: could not execute statement服務器
很明顯,是數據庫死鎖,致使不能執行個人更新sql。ui
查看進程spa
-- 查詢是否鎖表 show OPEN TABLES where In_use > 0; -- 查詢當前用戶進程 SHOW PROCESSLIST; -- 查詢當前的事務 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; -- 查看當前鎖定的事務 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看當前等鎖的事務 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
查找出佔用當前鎖的進程id,kill掉便可。hibernate
kill 1234;
經過上面方式未查詢到死鎖的進程,爲排除其餘進程影響,我將鏈接該數據庫的進程都kill掉,以後重啓服務進行從新鏈接,問題依然存在。日誌
數據庫死鎖產生的緣由有:code
經過上面排查基本排除掉是業務代碼產生死鎖,接下來排查系統資源,經過排查,發現果真是系統資源的緣由致使。慢日誌佔用空間過大,致使數據庫所在服務器不能再進行寫入,因此報IOException。排查問題時也應該先從IO異常開始的。blog
接下來就是分析慢日誌,肯定是業務代碼緣由仍是慢日誌配置的緣由(執行時間設定等),分析完以後刪掉騰出空間。進程