互联网服务调优高可用MongoDB

对于mongodb数据库如何进行高可用以及性能测试,如出现性能瓶颈常规调优方案有哪些?

参与12

2同行回答

TFTF技术总监上海锦木信息
高可用性测试比较简单,模拟单点故障或者网络故障来确认集群是否能够正常选举出新的主节点,并自动将应用切换到该节点上。压力测试的话可以使用压测工具,比如YCSB,或者使用基于cloud的测试方法。上线后运维阶段的数据库,性能诊断一般从 OS层 --> 数据库 --> 应用这样...显示全部

高可用性测试比较简单,模拟单点故障或者网络故障来确认集群是否能够正常选举出新的主节点,并自动将应用切换到该节点上。

压力测试的话可以使用压测工具,比如YCSB,或者使用基于cloud的测试方法。

上线后运维阶段的数据库,性能诊断一般从 OS层 --> 数据库 --> 应用这样逐级检查,再结合检查结果综合分析。

如果应用在开发阶段,则应该让DBA参与到模式设计,索引创建、架构规划的工作中;会大大减轻上线后的优化难度。

  1. OS层
  2. 内存大小:最好能把working set(热数据及索引)完整cache到内存中
  3. 磁盘IO:MongoDB的IO类型很少是sequentail,可以的话使用SSD,普通的SATA或者SAS磁盘创建RAID类型选择RAID10
  4. 参数设置(NUMA、 Huge page、ulimit、Readahead等等)
  5. 数据库
  6. 性能指标:各种opcounters类型统计、replication延迟、connection、cache等
  7. 日志:是否有报错
  8. 索引:无用索引,索引过度会导致插入修改性能下降;索引优化(sort、coverd query等)
  9. 慢查询:mtools&explain
  10. write concern & read concern参数
  11. 应用
  12. 模式设计
  13. 索引设计
  14. 分片(结合应用场景选择合适的片键)
  15. 聚合优化
  16. 语言驱动
收起
IT咨询服务 · 2018-04-23
浏览2279
彬彬 邀答
liucj2004liucj2004其它undefined
TF回答很全面,补充一下部分内容高可用测试时,还要观察好mongodb的日志。另外最好配合应用进行测试,因为很多时候应用中没有填写多个mongodb地址,导致短连接的程序高可用失败(长连接的程序即使只填写了一个地址,在连接时也会获取其他副本集节点地址)...显示全部

TF回答很全面,补充一下部分内容
高可用测试时,还要观察好mongodb的日志。另外最好配合应用进行测试,因为很多时候应用中没有填写多个mongodb地址,导致短连接的程序高可用失败(长连接的程序即使只填写了一个地址,在连接时也会获取其他副本集节点地址)

收起
农业其它 · 2018-05-06
浏览1999

提问者

jwhdhr
软件开发工程师农商银行
擅长领域: 数据库中间件消息中间件

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-04-22
  • 关注会员:3 人
  • 问题浏览:2780
  • 最近回答:2018-05-06
  • X社区推广