国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL redo死鎖問題排查及解決過程分析

2024-07-24 12:53:30
字體:
來源:轉載
供稿:網友

問題背景

周一上班,首先向同事了解了一下上周的測試情況,被告知在多實例場景下 MySQL Server hang 住,無法測試下去,原生版本不存在這個問題,而新版本上出現了這個問題,不禁心頭一顫,心中不禁感到奇怪,還好現場環境還在,為排查問題提供了一個好的環境,隨即便投入到緊張的問題排查過程當中。問題實例表現如下:

復制代碼 代碼如下:

并發量為 384 的時候出現的問題;
MySQL 服務器無法執行事務相關的語句,即使簡單的 select 語句也無法執行;
所有線程處于等待狀態,無法 KILL。
現場環境的收集

首先,通過 pstack 工具獲取當前問題實例的堆棧信息以便后面具體線程的查找 & 問題線程的定位:


使用 pt-pmp 工具統計 hang.info 中的進程信息,如下:










問題分析

從堆棧上可以看出,有這樣幾類線程:

等待進入 INNODB engine 層的用戶線程,測試環境中 innodb_thread_concurrency=16, 當 INNODB 層中的活躍線程數目大于此值時則需要排隊,所以會有大量的排隊線程,這個參數的影響&作用本身就是一篇很不錯的文章,由于篇幅有限,在此不做擴展,感興趣者可以參考官方文檔:14.14 InnoDB Startup Options and System Variables;
操作過程中需要寫 redo log 的后臺線程,主要包括 page cleaner 線程、異步 io threads等;
正在讀取Page頁面的 purge 線程 & 操作 change buffer 的 master thread;
大量的需要寫 redo log 的用戶線程。
從以上的分類不難看出,所有需要寫 redo log 的線程都在等待 log_sys->mutex,那么這個保護 redo log buffer 的 mutex 被究竟被哪個線程獲取了呢,因此,我們可以順著這個線索進行問題排查,需要解決以下問題:

問題一:哪個線程獲取了 log_sys->mutex ?
問題二:獲取 log_sys->mutex 的線程為什么沒有繼續執行下去,是在等其它鎖還是其它原因?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会宁县| 丹寨县| 清水河县| 南阳市| 喀喇沁旗| 施甸县| 泰来县| 江油市| 册亨县| 剑阁县| 青浦区| 道孚县| 普兰县| 宽城| 苗栗县| 正阳县| 阿荣旗| 加查县| 灯塔市| 榆中县| 鹿邑县| 含山县| 马鞍山市| 扎兰屯市| 屏山县| 阳原县| 肃宁县| 湖州市| 石屏县| 商河县| 东乡族自治县| 嘉定区| 泰兴市| 长寿区| 灵台县| 临朐县| 武安市| 临澧县| 满洲里市| 郴州市| 万州区|