【MySQL】MySQL從庫延遲排查一例

前言:周末春游的時候收到短信報警鸥昏,從庫延遲很高。手機(jī)VPN連進(jìn)數(shù)據(jù)庫以后排查情況姐帚,看到cpu使用率吏垮、磁盤IO、以及其他資源占用也不高罐旗。

一膳汪、登錄數(shù)據(jù)庫查看狀態(tài)

MariaDB [trswcmtest]> show processlist;
+---------+-------------------+---------------------+------------+---------+------+-----------------------------------------------+------------------------------------------------------------------------------------------------------+----------+
| Id      | User              | Host                | db         | Command | Time | State                                         | Info                                                                                                 | Progress |
+---------+-------------------+---------------------+------------+---------+------+-----------------------------------------------+------------------------------------------------------------------------------------------------------+----------+
| 3769833 | system user       |                     | NULL       | Connect | 4484 | Waiting for master to send event              | NULL                                                                                                 |    0.000 |
| 3769885 | trs               | 10.200.74.146:63067 | trswcmtest | Sleep   | 4404 |                                               | NULL                                                                                                 |    0.000 |
| 3770353 | root              | localhost           | trswcmtest | Query   |    0 | init                                          | show processlist                                                                                     |    0.000 |
| 3770655 | system user       |                     | trswcmtest | Connect |    0 | updating                                      | update xxx set xxx=6925613 where xxx= 6925613                    |    0.000 |
| 3770656 | system user       |                     | trswcmtest | Connect |    0 | updating                                      | update xxxx set xxx=0,xxx=0,xxx=0,xxx='' where Me |    0.000 |
| 3770657 | trs               | %                   | trswcmtest | Connect |    0 | Sending data                                  | UPDATE xxxx SET xxx='<br>uwbdhlnqvybejm&nbsp;(d:\\temp\\收到附件,      |    0.000 |
| 3770658 | system user       |                     | trswcmtest | Connect |    0 | updating                                      | update xxxx set xxx=1032, xxx='system', xxx='2018-03-31 12:08:38' where xxx|    0.000 |
| 3770659 | system user       |                     | NULL       | Connect |    0 | Waiting for prior transaction to commit       | NULL                                                                                                 |    0.000 |
| 3770660 | system user       |                     | trswcmtest | Connect |    0 | updating                                      | UPDATE xxxx SET  xxx=1032,xxx='2018-03-31 12:08:38' where xxx=7150769             |    0.000 |
| 3770661 | system user       |                     | NULL       | Connect |    0 | Waiting for prior transaction to commit       | NULL                                                                                                 |    0.000 |
| 3770662 | system user       |                     | NULL       | Connect |    0 | Waiting for prior transaction to commit       | NULL                                                                                                 |    0.000 |
| 3770663 | system user       |                     | NULL       | Connect | 1583 | Waiting for room in worker thread event queue | 

二九秀、原因分析

從上面看到遗嗽,進(jìn)程3770663一直處于Waiting for room in worker thread event queue的狀態(tài),因為該從庫開啟了并行復(fù)制,查閱MariaDB官方文檔了解到執(zhí)行 Replication 時鼓蜒,會有兩個 Thread痹换,一個是 SQL_THREAD,另一個是 IO_THREAD友酱,顧名思義晴音,SQL_THREAD 就是處理SQL 作業(yè)的 Thread,IO_THREAD 就是管理Binlog 從 Master 拿來然后回放在自己的 Relay Log 的 Thread缔杉。

  • 在沒有啟用并行復(fù)制時锤躁,sql線程就自己分配給自己,也因為沒法先看一下Binlog后面的事務(wù)或详,也許后面可以先做的系羞,但是還是得一個一個回放。

  • 當(dāng)有并行復(fù)制時霸琴,sql線程除了自己變成分配工作的線程以外椒振,會產(chǎn)生出slave_parallel_threads數(shù)量的線程來處理事務(wù),在分配工作時就知道哪些事務(wù)沒有順序關(guān)系梧乘,哪些有一定的順序澎迎,這樣回放就會快得多庐杨。
    但是怎么會出現(xiàn) Waiting for room in worker thread event queue.呢?
    從官方文檔 slave-parallel-max-queued

文章看一半就不會注意到這個參數(shù)夹供,如果你的事務(wù)在每個slave-parallel-max-queued大小的Transation Logs都能被解析灵份,這樣就有助于平行處理,但是如果無法解析哮洽,那就執(zhí)行等到預(yù)讀先做完填渠,有空間了再讀后面的Log并且繼續(xù)執(zhí)行,這樣可能平行處理的順序會被打亂鸟辅。

所以適當(dāng)?shù)卦O(shè)定 slave-parallel-max-queued是必須的氛什,但是它跟 slave_parallel_threads的使用是有關(guān)系的
slave_parallel_threads * slave_parallel_max_queued 為占用的總內(nèi)存,如果太大會造成OOM匪凉,我這里設(shè)置的128M枪眉,后續(xù)再進(jìn)行觀察。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洒缀,一起剝皮案震驚了整個濱河市瑰谜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌树绩,老刑警劉巖萨脑,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饺饭,居然都是意外死亡渤早,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門瘫俊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹊杖,“玉大人,你說我怎么就攤上這事扛芽÷畋停” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵川尖,是天一觀的道長登下。 經(jīng)常有香客問我,道長叮喳,這世上最難降的妖魔是什么被芳? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮馍悟,結(jié)果婚禮上畔濒,老公的妹妹穿的比我還像新娘。我一直安慰自己锣咒,他們只是感情好侵状,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布赞弥。 她就那樣靜靜地躺著,像睡著了一般壹将。 火紅的嫁衣襯著肌膚如雪嗤攻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天诽俯,我揣著相機(jī)與錄音,去河邊找鬼承粤。 笑死暴区,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辛臊。 我是一名探鬼主播仙粱,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼彻舰!你這毒婦竟也來了伐割?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤刃唤,失蹤者是張志新(化名)和其女友劉穎隔心,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尚胞,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硬霍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笼裳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唯卖。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖躬柬,靈堂內(nèi)的尸體忽然破棺而出拜轨,到底是詐尸還是另有隱情,我是刑警寧澤允青,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布橄碾,位于F島的核電站,受9級特大地震影響昧廷,放射性物質(zhì)發(fā)生泄漏堪嫂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一木柬、第九天 我趴在偏房一處隱蔽的房頂上張望皆串。 院中可真熱鬧,春花似錦眉枕、人聲如沸恶复。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谤牡。三九已至副硅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翅萤,已是汗流浹背恐疲。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留套么,地道東北人培己。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像胚泌,于是被迫代替她去往敵國和親省咨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容