国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MGR性能抖動問題分析

IT那活兒 / 3635人閱讀
MGR性能抖動問題分析

點擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!





問題現(xiàn)象



在對MGR 5.7.30版本進行性能壓力測試的時候出現(xiàn)周期性的性能驟降。
如上圖所示,會從TPS從1400降低為0。





問題復(fù)現(xiàn)



1. 使用sysbench 開啟128線程并行對MGR集群進行插入:
/usr/local/sysbench/bin/sysbench --test=oltp.lua --oltp-table-size=100000 --oltp_tables_count=10 --mysql-db=test --
mysql-user=root --mysql-password=X --socket=/var/lib/mysql/mysql.sock --db-driver=mysql --rand-init=on prepare  

/usr/local/sysbench/bin/sysbench --test=insert.lua --num_threads=128 --max-time=720  --max-requests=0   --report-
interval=1   --oltp-table-size=1000000 --mysql-db=test --
mysql-user=root --oltp-tables-count=10 --mysql-password=X  run
2. 以下為壓測結(jié)果截圖:





問題定位



1. 根據(jù)出現(xiàn)writes為0的時間間隔來判斷在60秒左右。
根據(jù)MGR的運行機制,每60秒會對內(nèi)存當(dāng)中的WriteSet進行清理,而清理之前會加鎖來阻塞新事務(wù)生成的WrieSet進入內(nèi)存區(qū),加鎖之后對內(nèi)存當(dāng)中所有WriteSet進行遍歷,判斷哪些WriteSet可以清理。如果內(nèi)存當(dāng)中WriteSet的數(shù)量很多,那加鎖的時間也就會越長。
2. 可以通過以下命令查看內(nèi)存當(dāng)中WriteSet的數(shù)量:
select COUNT_TRANSACTIONS_ROWS_VALIDATING from replication_group_member_statsG
3. 要驗證是否因為WriteSet清理導(dǎo)致事務(wù)阻塞所以進行如下測試:
使用大并發(fā)的插入,使得WriteSet的數(shù)量急劇增加,然后停止并發(fā)插入,觀察WriteSet清理情況。

1)通過sysbench將WriteSet增加:

上圖:可以看到COUNT_TRANSACTIONS_ROWS_VALIDATING的值已經(jīng)有4450518了。這時候sysbench的寫入也出現(xiàn)為0的情況,說明WriteSet已經(jīng)足夠多。

2)停止sysbench觀察WriteSet的清理:

從上圖可以看到,18:22:08和18:23:08的時候開始進行WriteSet的清理,時間間隔剛好60秒。從WriteSet數(shù)值的變化來看由12324198降低到12157800耗時14秒。
可以說明WriteSet每隔60秒清理一次,WriteSet量到達12324198的時候清理速度為14秒。

3)驗證清理的時候事務(wù)是否會被阻塞:

為了驗證是否阻塞插入,寫了個循環(huán)插入腳本,每隔一秒進行插入,并打印插入的時間。
通過上圖可以證明,19:00:09 WriteSet開始明顯下降,19:00:12 WriteSet開始上升。再對比左邊的插入腳本,19:00:09開始插入直到19:00:12才開始插入下一條。說明在清理WriteSet的時候會阻塞事務(wù)。





優(yōu)化建議



1. 限流

上面兩張圖的對比,WriteSet達到1200萬的時候清理一次14秒,而300萬的時候清理一次2秒
可以使用如下命令監(jiān)控WriteSet的數(shù)量,如果非常的大,對MGR集群進行限流。
select COUNT_TRANSACTIONS_ROWS_VALIDATING from replication_group_member_statsG
限流參數(shù):
  • group_replication_flow_control_mode

  • group_replication_flow_control_applier_threshold

  • group_replication_flow_control_certifier_threshold

2. 減少唯一索引數(shù)量

經(jīng)過測試,唯一索引數(shù)量越多,單個事務(wù)產(chǎn)生的WriteSet越多。
通過對比發(fā)現(xiàn),多一個唯一索引,會多生成2個WriteSet。



本文作者:許智發(fā)

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/129608.html

相關(guān)文章

  • 深度分析 | MGR相同GTID產(chǎn)生不同transaction故障分析

    摘要:對于該故障的分析,我們要從主從實例相同,但是事務(wù)不同的原因入手,該問題猜測與相關(guān),我們針對同步事務(wù)的時序做如下分析。接受者被動接收提議者的提議,并記錄和反饋,或?qū)W習(xí)達成共識的提議。節(jié)點將的提案信息發(fā)送至組內(nèi),仍收到了大多數(shù)成員返回。 本文是由愛可生運維團隊出品的「MySQL專欄」系列文章,內(nèi)容來自于運維團隊一線實戰(zhàn)經(jīng)驗,涵蓋MySQL各種特性的實踐,優(yōu)化案例,數(shù)據(jù)庫架構(gòu),HA,監(jiān)控等...

    wuaiqiu 評論0 收藏0
  • 如何利用Docker構(gòu)建基于DevOps的全自動CI

    摘要:三私有代碼庫阿里云使用引言使用肯定離不開和代碼的集成。本著代碼可靠性,服務(wù)器穩(wěn)定性,功能擴展性綜合對比,我們選擇使用阿里云的庫。 來自用戶的DevOps實踐分享,分享從開發(fā)代碼到生產(chǎn)環(huán)境部署的一條龍操作的實踐及經(jīng)驗, 包含工具技術(shù)的選型及考量、私有代碼庫與私有鏡像庫的應(yīng)用等。 (一)容器服務(wù)的Rancher選型 1、為什么說是下一代核心技術(shù) 從互聯(lián)網(wǎng)的多次變革說起,早期的C/S架構(gòu),到...

    stormzhang 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<