首页>SQL技巧教程>文章详情

MongoDB集群性能优化

3/7/2017
2870
1、软件方面 MongoDB版本选择锁粒度 Global(2.2-)DB锁(2.2+)Collection(2.4+)Document锁(2.6+)读写锁、写优先锁性能逐渐增强启发 尽量选择新的稳定版本 性能提升稳定bugs fixed 索引创建 设计不合理长索引 字符串等 id objectid12字节应用程序替换月业务需要uid灵活控制 索引设计过多索引使用不合理启发 使用短索引 小索引字段业务合理设计 数据量增大 热点数据超过内存频繁swap 导致性能地下 内存规划 内存大于热门数据加上索引 启发 加大内存容量 数据空洞 大量删除数据造成大量数据碎片和空间内存中包含空洞数据利用率低数据收缩 Online compactoffline收缩数据库无空洞、无碎片、进奏、性能较高 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 CompressOffline 收缩数据 如何Scale Up方式提升性能 概念 Scale Vertically纵向扩展 软件方面 锁粒度问题索引优化 更紧凑索引 业务层优化 SQL语义优化批量读写优化连接池优化 如何Scale out方式提升性能 概念 Scale horizontally横向扩展,向外扩展 数据迁移 增加一个新增副本集合更通用数据迁移方案 时效性 过去作废迁移简单业务开始写入,到时终止 永久数据 消息队列(写入命令进行回放)中间存储快照 集群优化集合 尽早发现 机器监控报警语义控制报警错误日志报警mongostatmongotop scale outscale up