MongoDB 分片叢集均衡器導致的效能下降

清風艾艾發表於2022-10-31

        近期,有人反饋其mongodb分片叢集,在載入處理大批次資料時,程式處理十分緩慢並且應用還會報錯: version mismatch detected for 。 現將分析彙總如下備用。

        一、問題現象

負責同事反饋9月1日18:52分左右,應用報錯version mismatch detected for。

二、問題分析

--mongodb為4.2.15的三分片叢集且叢集均衡器為啟用狀態

--觀察叢集報錯前後的mongod日誌發現,9月1號18:48分叢集在頻繁的moveChunk

--叢集在頻繁的moveChunk消耗的時間比較長

--9月1日18:55分mongod日誌才提示end of migration,應用報錯叢集正在moveChunk操作

由以上日誌可知,是應用大批次載入資料,導致叢集均衡器分裂chunk並執行遷移,磁碟IO效能低下不能支援mongod快速資料遷移和metadata重新整理, 引起應用查詢不到最新的資料而報錯。

三、 問題處理

a、提高磁碟效能,更換SSD盤

b、業務高峰期臨時關閉叢集均衡器

         透過Mongo Shell連線MongoDB分片叢集例項

         在mongos節點命令視窗中,切換至 config 資料庫

        use config;

         執行如下命令檢視Balancer執行狀態,如返回值為空則均衡器空閒

         while( sh.isBalancerRunning() ) {

         print("waiting...");

           sleep(1000);

         }

       確認執行命令後返回的值為空,可執行關閉Balancer命令

       sh.stopBalancer()

       c、臨時處理方法重新整理路由器(業務高峰期有風險)

        use config;

        db.adminCommand({_flushRoutingTableCacheUpdates: ns, syncFromConfig: true})




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2921200/,如需轉載,請註明出處,否則將追究法律責任。

相關文章