ITPub博客

首页 > 数据库 > NoSQL > MongoDB 分片集群均衡器导致的性能下降

MongoDB 分片集群均衡器导致的性能下降

原创 NoSQL 作者:清风艾艾 时间:2022-10-31 21:09:28 0 删除 编辑

        近期,有人反馈其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博客 ” ,链接:https://blog.itpub.net/29357786/viewspace-2921200/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
个人喜欢IT行业,目前从事数据库工作,包括Oracle、mysql、mongodb、sqlserver等数据库的维护,喜欢专研开发技术,尤其对java程序的开发感兴趣。工作经历上,在中国联通系统集成公司、中公网医疗信息技术有限公司做过数据库技术支持;目前在海量数据,负责华东区oracle、mysql、mongodb的维护工作。

注册时间:2015-01-30

  • 博文量
    251
  • 访问量
    544802