自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MTS性能監(jiān)控你知道多少

安全 應(yīng)用安全
和并行回放的事務(wù)繁忙程度并沒(méi)有太大的關(guān)系,滿足條件即會(huì)記錄日志。假如一個(gè)事務(wù)有4個(gè)event,參數(shù)設(shè)置正常,每?jī)煞昼妶?zhí)行256個(gè)事務(wù),就會(huì)輸出一條日志信息,一秒鐘3個(gè)事務(wù)不到。

前言

說(shuō)到MySQL的MTS,相信很多同學(xué)都不陌生,從5.6開(kāi)始基于schema的并行回放,到5.7的LOGICAL_CLOCK支持基于事務(wù)的并行回放,這些內(nèi)容都有文章講解,在本篇文章不再贅述。今天要講的是,你知道如何查看并行回放是否存在性能瓶頸嗎,是由于主庫(kù)事務(wù)行為導(dǎo)致無(wú)法并行回放,還是由于worker線程不足,限制了并行回放的天花板?這都得從一個(gè)Note信息說(shuō)起。

MY-010559

在開(kāi)啟了多線程回放的從庫(kù)error log,我們經(jīng)常能看到Note級(jí)別的日志信息MY-010559

圖片圖片

讓我們來(lái)看看這些日志的含義

Seconds elapsed:當(dāng)前時(shí)間與上次輸出日志時(shí)間的間隔秒數(shù)

Events assigned:自slave協(xié)調(diào)線程啟動(dòng)后,累計(jì)處理分發(fā)給worker線程的event數(shù)量。簡(jiǎn)單理解為slave啟動(dòng)后處理的event數(shù)量。

Worker queues filled over overrun level:worker線程處理的event隊(duì)列長(zhǎng)度超過(guò)最大隊(duì)列數(shù)(目前代碼硬編碼16384)的90%的次數(shù),如果0則說(shuō)明未發(fā)生該情況。

Waited due to worker queue full:worker線程處理的event隊(duì)列長(zhǎng)度達(dá)到最大(目前代碼硬編碼16384)的次數(shù),如果為0則說(shuō)明未發(fā)生該情況,是前面Worker queues filled over overrun level的情況升級(jí)。

Waited due to the total size:協(xié)調(diào)線程分發(fā)event大小達(dá)到replica_pending_jobs_size_max或者slave_pending_jobs_size_max限制而產(chǎn)生等待的次數(shù)。前面兩個(gè)參數(shù)是限制worker線程處理event隊(duì)列能夠申請(qǐng)的最大內(nèi)存(即大事務(wù))。如果遇到此種大事務(wù),在回放該大事務(wù)之前,會(huì)等待其他worker線程處理完已分配event,然后再進(jìn)行該大事務(wù)的回放,回放過(guò)程中,后續(xù)的event回放,也會(huì)進(jìn)入等待狀態(tài)??傊?,大事務(wù)回放特別影響并行回放的性能,只能串行回放。

Waited at clock conflicts:由于不能并行回放的累計(jì)等待時(shí)間,單位納秒。如果并行回放策略設(shè)置的是DATABASE而不是LOGICAL_CLOCK,該值一直為0。

Waited (count) when workers occupied:協(xié)調(diào)線程休眠次數(shù)。有兩種情況會(huì)累加此狀態(tài)值:1、worker線程達(dá)到最大隊(duì)列數(shù)(目前代碼硬編碼16384)的90%,此種情況協(xié)調(diào)線程最多休眠1毫秒;2、并行回放策略設(shè)置為L(zhǎng)OGICAL_CLOCK時(shí),由于沒(méi)有空閑的worker線程導(dǎo)致無(wú)法分配事務(wù)的第一個(gè)event而產(chǎn)生的等待,此種情況協(xié)調(diào)線程會(huì)一直處于等待狀態(tài)直到有空閑的worker線程能夠處理回放。

Waited when workers occupied:等待空閑的worker線程累計(jì)時(shí)間,單位納秒,對(duì)應(yīng)Waited (count) when workers occupied的第二種等待情況。

代碼分析

在8.0.26版本的代碼中,我們通過(guò)錯(cuò)誤信息關(guān)鍵字waited at clock conflicts查找,發(fā)現(xiàn)信息記錄在變量ER_RPL_MTS_STATISTICS中,

圖片圖片

繼續(xù)按變量查找,發(fā)現(xiàn)其使用在rpl_replica.cc文件的apply_event_and_update_pos函數(shù)中,主要邏輯代碼如下

圖片圖片

可以看到,滿足如下幾個(gè)條件,日志信息就會(huì)輸出

  1. 并行回放為開(kāi)啟狀態(tài)
  2. 并行回放的累計(jì)event數(shù)量對(duì)1024取模余1
  3. 當(dāng)前時(shí)間減去上次日志時(shí)間間隔大于mts_online_stat_period(硬編碼120)秒
  4. error log日志級(jí)別為info(log_error_verbosity=3)

上述幾個(gè)條件,和并行回放的事務(wù)繁忙程度并沒(méi)有太大的關(guān)系,滿足條件即會(huì)記錄日志。假如一個(gè)事務(wù)有4個(gè)event,參數(shù)設(shè)置正常,每?jī)煞昼妶?zhí)行256個(gè)事務(wù),就會(huì)輸出一條日志信息,一秒鐘3個(gè)事務(wù)不到。

日志解析觀察

在我的日志文件中,取了如下兩條連續(xù)的信息

2023-07-09T08:58:01.001019+08:00 909 [Note] [MY-010559] [Repl] Multi-threaded slave statistics for channel 'group_replication_applier': seconds elapsed = 180; events assigned = 11515905; worker queues filled over overrun level = 8314; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 136628031500 waited (count) when Workers occupied = 242457 waited when Workers occupied = 2223254351900
2023-07-09T09:00:01.648124+08:00 909 [Note] [MY-010559] [Repl] Multi-threaded slave statistics for channel 'group_replication_applier': seconds elapsed = 120; events assigned = 11518977; worker queues filled over overrun level = 8314; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock conflicts = 136644607700 waited (count) when Workers occupied = 242491 waited when Workers occupied = 2223755727800

第一條解析信息如下:

. 本次日志輸出時(shí)間點(diǎn)為2023-07-09T08:58:01.001019
. 與上次日志輸出間隔時(shí)間為180秒
. 累計(jì)處理event數(shù)量為11515905
. worker線程處理的event隊(duì)列長(zhǎng)度超過(guò)最大隊(duì)列數(shù)(目前代碼硬編碼16384)的90%的累計(jì)次數(shù)8314次
. worker線程處理的event隊(duì)列長(zhǎng)度達(dá)到最大隊(duì)列數(shù)(目前代碼硬編碼16384)的累計(jì)次數(shù)為0次
. 回放event大小達(dá)到replica_pending_jobs_size_max或者slave_pending_jobs_size_max的次數(shù)為0
. 由于不能并行回放而產(chǎn)生的累計(jì)等待時(shí)間為136628031500納秒(約136.62秒)
. 協(xié)調(diào)線程累計(jì)休眠242457次
. 累計(jì)等待空閑worker線程的時(shí)間為2223254351900納秒(約2223.33秒)

第二條解析信息如下:

. 本次日志輸出時(shí)間點(diǎn)為2023-07-09T09:00:01.648124
. 與上次日志輸出間隔時(shí)間為120秒
. 累計(jì)處理event數(shù)量為11518977,新增處理event數(shù)量3072(為1024的3倍)
. worker線程處理的event隊(duì)列長(zhǎng)度超過(guò)最大隊(duì)列數(shù)(目前代碼硬編碼16384)的90%的累計(jì)次數(shù)8314次,新增0次
. worker線程處理的event隊(duì)列長(zhǎng)度達(dá)到最大隊(duì)列數(shù)(目前代碼硬編碼16384)的累計(jì)次數(shù)為0次
. 回放event大小達(dá)到replica_pending_jobs_size_max或者slave_pending_jobs_size_max的次數(shù)為0
. 由于不能并行回放而產(chǎn)生的累計(jì)等待時(shí)間為136644607700納秒(約136.64秒,新增等待約0.02秒)
. 協(xié)調(diào)線程累計(jì)休眠242457次,新增34次
. 累計(jì)等待空閑worker線程的時(shí)間為2223755727800納秒(約2223.38,新增等待約0.05秒)

通過(guò)上述信息,可以看出,在日志階段,系統(tǒng)處于空閑狀態(tài),處理事務(wù)數(shù)不多。 對(duì)比各個(gè)參數(shù),在系統(tǒng)繁忙時(shí),因?yàn)椴荒懿⑿谢胤女a(chǎn)生的等待時(shí)間為136.64秒,等待空閑的worker線程累計(jì)時(shí)間為2223.38,因此增大slave_parallel_workers的參數(shù)值,可以提升并行回放性能。

總結(jié)

[Note] [MY-010559]在我剛開(kāi)始接觸時(shí),以為是系統(tǒng)出現(xiàn)了異常產(chǎn)生的日志,待真正了解其內(nèi)容后,才發(fā)現(xiàn)通過(guò)該日志可以幫助我們了解MTS運(yùn)行情況,針對(duì)性的做優(yōu)化調(diào)整。

參考鏈接https://dev.mysql.com/doc/refman/8.0/en/replication-threads-monitor-worker.html

責(zé)任編輯:武曉燕 來(lái)源: GreatSQL社區(qū)
相關(guān)推薦

2024-04-17 08:35:04

Lua腳本Redis數(shù)據(jù)結(jié)構(gòu)

2020-10-19 08:53:08

Redis性能指標(biāo)監(jiān)控

2022-08-11 08:46:23

索引數(shù)據(jù)結(jié)構(gòu)

2024-05-06 00:30:00

MVCC數(shù)據(jù)庫(kù)

2022-03-23 15:36:13

數(shù)字化轉(zhuǎn)型數(shù)據(jù)治理企業(yè)

2018-01-02 09:31:12

大數(shù)據(jù)數(shù)據(jù)互聯(lián)網(wǎng)

2019-05-08 16:00:48

人工智能人臉識(shí)別刷臉

2024-09-26 14:48:35

SpringAOP范式

2023-09-18 08:56:57

StringJava

2023-08-28 07:39:49

線程調(diào)度基本單位

2024-10-28 12:46:22

2025-04-01 08:45:00

2021-07-26 23:57:48

Vuex模塊項(xiàng)目

2015-01-27 15:30:10

反監(jiān)控監(jiān)控探測(cè)SnoopSnitch

2024-03-20 00:04:46

TypeScriptas const類型斷言

2019-07-04 05:22:02

物聯(lián)網(wǎng)設(shè)備物聯(lián)網(wǎng)IOT

2024-12-26 09:05:18

HTTP狀態(tài)碼數(shù)據(jù)

2018-08-24 06:56:17

2024-08-15 09:41:18

2011-06-24 17:30:34

網(wǎng)站權(quán)重
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)