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

資訊專欄INFORMATION COLUMN

MGR性能抖動問題分析

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

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





問題現象



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





問題復現



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. 以下為壓測結果截圖:





問題定位



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

1)通過sysbench將WriteSet增加:

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

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

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

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

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





優化建議



1. 限流

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

  • group_replication_flow_control_applier_threshold

  • group_replication_flow_control_certifier_threshold

2. 減少唯一索引數量

經過測試,唯一索引數量越多,單個事務產生的WriteSet越多。
通過對比發現,多一個唯一索引,會多生成2個WriteSet。



本文作者:許智發

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129608.html

相關文章

  • 深度分析 | MGR相同GTID產生不同transaction故障分析

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

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

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

    stormzhang 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

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