加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 建站 > 正文

这场MongDB事故暴露的潜在危机,你是否也正在忽视?

发布时间:2018-12-16 15:29:34 所属栏目:建站 来源:张开威
导读:副标题#e# 一、MongoDB特性 MongoDB是一个可扩展的高性能基于文档的NoSQL数据库,具备但不限于以下特性: 无数据结构限制和高性能 MongoDB以文档结构的存储方式,能够更便捷的获取数据; MongoDB没有表结构的概念,每条记录可以有完全不同的结构,业务开发

在整个调整过程中,经历了多次压测,下面展示部分测试数据:

这场MongDB事故暴露的潜在危机,你是否也正在忽视?

服务器ip+信息采集时间组合分片测试数据

上表为最终的片键改造方案下的部分压测数据,可以看出,调整前后性能提升较大。

三、心得

我们整理一下mongodb在咪咕的运维心得,希望能抛砖引玉。

运维流程机制

  •  务必建立完善的运维管理流程,故障处理机制等;
  •  规范化、模板化:对日常运维务必做到规范化,比如安装规范,避免人为原因重复踩坑。

硬件配置

确保内存设置能满足性能需求:确保内存>索引容量+高频访问数据容量

  •  大多数情况下,MongoDB热数据(索引和最频繁访问的数据)全部缓存在RAM中时性能最好;
  •  相对于其它优化,扩大内存的效果尤为显著;如果热数据超过了单个服务器的RAM,此时往往需要考虑扩大内存或者分片。

使用SSD磁盘

  •  写操作负载高的应用采用SSD:SSD提供强大随机读取性能,大部分情况下符合MongoDB的数据访问模式。

使用RAID

  •  出于安全和性能考虑,可采用合适的RAID模式,推荐RAID-10。

选用多核和更快的CPU

  •  MongoDB在更快的CPU上提供更好的性能,且WiredTiger存储引擎能够充分利用多核处理器资源(并发线程数和cpu核心数量相等)。

系统配置

开启NTP时间同步

  •  使用复制集或者分片集群需要开启NTP时间同步,这对于MongoDB正常运行尤为重要。

禁用NUMA

  •  MongoDB运行在NUMA系统上会导致性能下降,因此需关闭NUMA配置。 
  1. linux6 修改/boot/grub/grub.conf中kernel,添加numa=off  
  2. linux7 修改/etc/grub2.cfg中linux16部分添加numa=off 

禁用Transparent Huge Pages

  •  数据库往往具有稀疏而不是连续的内存访问模式。应该在Linux机器上禁用THP以确保使用MongoDB获得最佳性能。 
  1. kernel 参数添加transparent_hugepage=never 

设置readahead

  •  预读值是文件操作系统的一个优化手段,程序请求读取一个页面的时候,文件系统会同时读取下面的几个页面并返回。
  •  设置合理的readahead值有利于提高MongoDB性能,使用MMAPv1引擎推荐设置为32或16,对于WiredTiger无论何种存储介质都建议设置为0。 
  1. blockdev --report  
  2. blockdev --setra 0 /dev/sda 

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读