位置: 编程技术 - 正文

记一次MongoDB性能问题(从MySQL迁移到MongoDB)(mongodb writeconcern)

编辑:rootadmin

推荐整理分享记一次MongoDB性能问题(从MySQL迁移到MongoDB)(mongodb writeconcern),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb笔记,mongodb计数,mongodb做统计速度快么,mongodb实验总结,mongodb 记录日志,mongodb 记录日志,mongodb writeconcern,mongodb writeconcern,内容如对您有帮助,希望把文章链接给更多的朋友!

公司为这个项目专门配备了几台高性能务器,清一色的双路四核超线程CPU,外加G内存,运维人员安装好MongoDB后,就交我手里了,我习惯于在使用新服务器前先看看相关日志,了解一下基本情况,当我浏览MongoDB日志时,发现一些警告信息:

WARNING: You are running on a NUMA machine. We suggest launching mongod like this to avoid performance problems: numactl ?interleave=all mongod [other options]

当时我并不太清楚NUMA是什么东西,所以没有处理,只是把问题反馈给了运维人员,后来知道运维人员也没有理会这茬儿,所以问题的序幕就这样拉开了。

迁移工作需要导入旧数据。MongoDB本身有一个mongoimport工具可供使用,不过它只接受json、csv等格式的源文件,不适合我的需求,所以我没用,而是用PHP写了一个脚本,平稳运行了一段时间后,我发现数据导入的速度下降了,同时PHP抛出异常:

cursor timed out (timeout: , time left: 0:0, status: 0)

我一时判断不出问题所在,想想先在PHP脚本里加大Timeout的值应付一下:

可惜这样并没有解决问题,错误反倒变着花样的出现了:

max number of retries exhausted, couldn't send query, couldn't send query: Broken pipe

接着使用strace跟踪了一下PHP脚本,发现进程卡在了recvfrom操作上:

通过如下命令查询recvfrom操作的含义:

或者按照下面的方式确认一下:

此时如果查询MongoDB的当前操作,会发现几乎每个操作会消耗大量的时间:

与此同时,运行mongostat的话,结果会显示很高的locked值。

记一次MongoDB性能问题(从MySQL迁移到MongoDB)(mongodb writeconcern)

我在网络上找到一篇:MongoDB Pre-Splitting for Faster Data Loading and Importing,看上去和我的问题很类似,不过他的问题实质是由于自动分片导致数据迁移所致,解决方法是使用手动分片,而我并没有使用自动分片,自然不是这个原因。

询问了几个朋友,有人反映曾遇到过类似的问题,在他的场景里,问题的主要原因是系统IO操作繁忙时,数据文件预分配堵塞了其它操作,从而导致雪崩效应。

为了验证这种可能,我搜索了一下MongoDB日志:

我使用的文件系统是ext4(xfs也不错 ),创建数据文件非常快,所以不是这个原因,但如果有人使用ext3,可能会遇到这类问题,所以还是大概介绍一下如何解决:

MongoDB按需自动生成数据文件:先是<DB>.0,大小是M,然后是<DB>.1,大小翻番到M,到了<DB>.5,大小翻番到2G,其后的数据文件就保持在2G大小。为了避免可能出现的问题,可以采用事先手动创建数据文件的策略:

注:数值并不是标准的2G,这是INT整数范围决定的。

最后一个求助方式就是官方论坛了,那里的国际友人建议我检查一下是不是索引不佳所致,死马当活马医,我激活了Profiler记录慢操作:

不过结果显示基本都是insert操作(因为我是导入数据为主),本身就不需要索引:

问题始终没有得到解决,求人不如求己,我又重复了几次迁移旧数据的过程,结果自然还是老样子,但我发现每当出问题的时候,总有一个名叫irqbalance的进程CPU占用率居高不下,搜索了一下,发现很多介绍irqbalance的文章中都提及了NUMA,让我一下子想起之前在日志中看到的警告信息,我勒个去,竟然绕了这么大一个圈圈!安下心来仔细翻阅文档,发现官方其实已经有了相关介绍,按如下设置搞定:

关于zone_reclaim_mode内核参数的说明,可以参考官方文档。

注:从MongoDB1.9.2开始:MongoDB会在启动时自动设置zone_reclaim_mode。

至于NUMA的含义,简单点说,在有多个物理CPU的架构下,NUMA把内存分为本地和远程,每个物理CPU都有属于自己的本地内存,访问本地内存速度快于访问远程内存,缺省情况下,每个物理CPU只能访问属于自己的本地内存。对于MongoDB这种需要大内存的服务来说就可能造成内存不足,NUMA的详细介绍,可以参考老外的文章。

理论上,MySQL、Redis、Memcached等等都可能会受到NUMA的影响,需要留意。

mongodb在建立一个T级别的数据库时,进程挂掉的解决方法 mongod进程退出,退出时数据库中记录大概1.2亿,数据库小大G错误信息如下:SatMay::Invalidaccessataddress:0x7efaSatMay::Gotsignal:7(Buserror).SatMay

mongodb 常见问题处理方法收集 1非正常关闭服务或关机后mongod服务无法正常启动在使用中发现mongodb的服务很容易因为非正常关闭而启动不了,不过解决也很容易删除data目录下的*.lock

MongoDB使用小结:一些不常见的经验分享 本文完成时MongoDB的最新版本为MongoDB2.、count统计结果错误这是由于分布式集群正在迁移数据,它导致count结果值错误,需要使用aggregatepipeline来得到正

标签: mongodb writeconcern

本文链接地址:https://www.jiuchutong.com/biancheng/312613.html 转载请保留说明!

上一篇:Mongodb常见错误与解决方法小结(Mongodb中经常出现的错误)(mongodb的坑)

下一篇:mongodb在建立一个T级别的数据库时,进程挂掉的解决方法(mongodb创建库)

  • 收到以前年度退所得税分录
  • 化粪池合同书
  • 财务会计制度备案操作流程
  • 签章是签字还是盖章 财务
  • 增值税发票常见问题
  • 收到土地使用权转让金会计分录
  • 专用发票作废后怎么处理
  • 民办非企业单位可以盈利吗
  • 劳务报酬代扣代缴个人所得税怎么做账
  • 发票可以开具办公用品吗?
  • 有限责任公司(自然人投资或控股)属于什么经济类型
  • 免抵退税额抵减额是什么意思
  • 金税盘的年费怎么做抵扣帐
  • 小规模纳税人酒水税率
  • 营改增后印花税计税依据文件
  • 适用简易计税方法的企业提供适用零税率的应税服务
  • 法院拍卖破产企业房产,税费问题
  • 轨道交通很高兴 土地税优惠来了
  • 所有利息收入都免税吗
  • 软件企业用退税吗
  • 预缴税款 免申报
  • 个税免税收入和不征税收入
  • 个人退回公积金怎么操作
  • 雇主责任险发票可以用复印件吗
  • 鸿蒙系统网络差怎么解决
  • 企业固定资产出售账务处理
  • 从劳务市场雇人受伤了怎么办?
  • php加载
  • windows无法自动检测网络代理设置该怎么办
  • 1050ti能玩绝地求生吗
  • 长期债权投资收回的利息 现金流量表
  • 企业最佳资金结构
  • php获取指定日期的星期几的方法是
  • 工商变更后税务会自动变更吗
  • 运输公司汽车折旧年限
  • vue中computed作用
  • php xml转数组
  • 募股方案
  • 企业发生的咨询费应计入哪个科目
  • 删除sql server2019
  • 2000元以内最强二手游戏笔记本
  • 建筑企业预缴的增值税怎么抵扣
  • 个人所得税申报方式选哪个比较好
  • 超过两年记入错误的主营业务成本怎么调账?
  • 拍卖行业收取手续费多少
  • 增值税月末结转处理
  • 有哪些发票可以报销
  • 外地工程预缴的工资怎么做账务处理
  • 房产契税什么时候退税
  • 发给客户的红包是什么费用
  • 帮其他公司交水费税差
  • 本年利润到年末还有余额吗
  • 公司的日常费用支出能税前全部扣除吗?
  • 环保局罚款记什么科目
  • 会计信息不采集可以考初级吗
  • 筹建期间开办费跨年
  • 建筑公司的会计好做吗
  • win10如何连接远程电脑
  • xp系统如何更新
  • 微软称十年内将淘汰程序员
  • win8旗舰版官方下载
  • /proc目录造成linux根目录爆满
  • 华为nova7耳机怎么戴
  • windows7没有桌面图标
  • js 箭头表达式
  • javascript判断浏览器
  • 要使物体从静止状态转变为运动状态需要对这个物体什么
  • jquery设置图片路径
  • javascrapt
  • android局部界面切换
  • js中new一个函数
  • python线程daemon
  • 代建工程如何缴纳增值税
  • 央企收入归谁
  • 不用税控盘可以勾选发票吗
  • 建筑行业增值税11%
  • 企业代理申报还用自己申报吗
  • 商业保险扣除限额企业所得税
  • 广西税务申报增值税时为什么打开表格时总是加载中
  • ca认证登录不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设