MongoDB集群性能优化

来源:互联网 发布:网络有线继电器 编辑:程序博客网 时间:2024/05/16 07:25
1、软件方面
  • MongoDB版本选择
  • 锁粒度
    • Global(2.2-)
    • DB锁(2.2+)
    • Collection(2.4+)
    • Document锁(2.6+)
    • 读写锁、写优先锁
    • 性能逐渐增强
    • 启发
      • 尽量选择新的稳定版本
        • 性能提升
        • 稳定
        • bugs fixed
  • 索引创建
    • 设计不合理
    • 长索引
      • 字符串等
    • id
      • objectid
      • 12字节
      • 应用程序替换
      • 月业务需要
      • uid
      • 灵活控制
    • 索引设计过多
    • 索引使用不合理
    • 启发
      • 使用短索引
        • 小索引字段
        • 业务
        • 合理设计
  • 数据量增大
    • 热点数据超过内存
    • 频繁swap
  • 导致性能地下
    • 内存规划
      • 内存大于热门数据加上索引
    • 启发
      • 加大内存容量
  • 数据空洞
    • 大量删除数据
    • 造成大量数据碎片和空间
    • 内存中包含空洞数据
    • 利用率低
    • 数据收缩
      • Online compact
      • offline收缩
      • 数据库无空洞、无碎片、进奏、性能较高
2、硬件方面
  • 物理内存小
  • 硬盘性能检查
    • 无法满足目前的读写并发
  • 优化方案
    • 加大内存容量
    • 硬件类型
      • SSD》SDS》SATA
3、如何尽快发现MongoDB集群性能问题
  • 监控的方式
    • 机器资源监控
      • CPU资源
        • 核心数
        • top
      • 内存资源
        • 内存使用和剩余情况
        • free -g
      • 磁盘资源
        • 磁盘空间
        • df -h
        • 性能
        • iostat -xdk 1
      • 网络资源
        • ifstat 1
      • 负载均衡
        • load average
        • <=总核数
      • 语义监控
        • 进程管理
        • 是否正常工作
        • 模拟发送请求
        • 预期结果对比
        • 如果持续返回错误表示性能有问题
      • 错误日志监控
        • 进程管理
        • 服务是否正常
        • 阈值设置1分钟
        • 基于日志的准实时统计
        • 如果超过阈值性能,数据集群可能出现问题
    • monostat
      • 读写情况、加锁、索引命中、缺页终端、读写
      • 监控分析
        • locked、faults、miss、qr|qw
        • 内存、内冷数据、索引设置不合理、qr|qw堆积
    • mongotop
      • 追踪mongodb读写所用时间
      • 表级性能问题
        • 表级读写时间
  • 如何收缩数据提升性能
    • Online Compress
    • Offline 收缩数据
  • 如何Scale Up方式提升性能
    • 概念
      • Scale Vertically
      • 纵向扩展
    • 软件方面
      • 锁粒度问题
      • 索引优化
        • 更紧凑索引
      • 业务层优化
        • SQL语义优化
        • 批量读写优化
        • 连接池优化
  • 如何Scale out方式提升性能
    • 概念
      • Scale horizontally
      • 横向扩展,向外扩展
    • 数据迁移
      • 增加一个新增副本集合
      • 更通用数据迁移方案
        • 时效性
          • 过去作废
          • 迁移简单
          • 业务开始写入,到时终止
        • 永久数据
          • 消息队列(写入命令进行回放)
          • 中间存储快照
  • 集群优化集合
    • 尽早发现
      • 机器监控报警
      • 语义控制报警
      • 错误日志报警
      • mongostat
      • mongotop
    • scale out
    • scale up
0 0