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 Com
PRessOffline 收缩数据
如何Scale Up方式提升性能
概念
Scale Vertically纵向扩展
软件方面
锁粒度问题索引优化
更紧凑索引
业务层优化
SQL语义优化批量读写优化连接池优化
如何Scale out方式提升性能
概念
Scale horizontally横向扩展,向外扩展
数据迁移
增加一个新增副本集合更通用数据迁移方案
时效性
过去作废迁移简单业务开始写入,到时终止
永久数据
消息队列(写入命令进行回放)中间存储快照
集群优化集合
尽早发现
机器监控报警语义控制报警错误日志报警mongostatmongotop
scale outscale up
最新文章推荐