MongoDB——监控及性能优化

1. MongoDB的监控

  • 为什么要监控?
    监控及时获得应用的运行状态信息,在问题出现时及时发现。

  • 监控什么?
    CPU、内存、磁盘I/O、应用程序(MongoDB)、进程监控(ps -aux)、错误日志监控

2. MongoDB集群监控方式

1> 查看实例运行状态命令(内存使用、锁、用户连接等信息)

db.serverStatus()

通过比对前后快照进行性能分析

"connections"     # 当前连接到本机处于活动状态的连接数
"activeClients"   # 连接到当前实例处于活动状态的客户端数量
"locks"           # 锁相关参数
"opcounters"      # 启动之后的参数
"opcountersRepl"  # 复制想关
"storageEngine"   # 查看数据库的存储引擎
"mem"             # 内存相关

2> 查看状态命令:

db.stats()

显示信息说明:

 "db" : "test" ,表示当前是针对"test"这个数据库的描述。想要查看其他数据库,可以先运行$ use databasename(e.g  $use admiin).
 "collections" : 3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.
 "objects" : 13,表示当前数据库所有collection总共有多少行数据。显示的数据是一个估计值,并不是非常精确。
 "avgObjSize" : 36,表示每行数据是大小,也是估计值,单位是bytes
 "dataSize" : 468,表示当前数据库所有数据的总大小,不是指占有磁盘大小。单位是bytes
 "storageSize" : 13312,表示当前数据库占有磁盘大小,单位是bytes,因为mongodb有预分配空间机制,为了防止当有大量数据插入时对磁盘的压力,因此会事先多分配磁盘空间。
 "numExtents" : 3,似乎没有什么真实意义。我弄明白之后再详细补充说明。
 "indexes" : 1 ,表示system.indexes表数据行数。
 "indexSize" : 8192,表示索引占有磁盘大小。单位是bytes
  "fileSize" : 201326592,表示当前数据库预分配的文件大小,例如test.0,test.1,不包括test.ns。

3> mongostat实时数据库状态

读写、加锁、索引命中、缺页中断、读写等待队列等情况。每秒刷新一次状态值,并能提供良好的可读性,通过这些参数可以观察到MongoDB系统整体性能情况。

参数参数说明
insert每秒插入量
query每秒查询量
update每秒更新
delete每秒删除
conn当前连接数
qr/qw客户端查询排队长度(读/写)最好为0,若有堆积数据库处理慢
ar/aw活跃客户端数量(读/写)
time当前时间

4> mongotop命令说明:

ns:数据库命名空间,后者结合了数据库名称和集合。
total:mongod在这个命令空间上花费的总时间。
read:在这个命令空间上mongod执行读操作花费的时间。
write:在这个命名空间上mongod进行写操作花费的时间。

5> db级别命令

  • 查看数据库当前执行什么操作。
db.currentOp()

用于查看长时间运行进程。
通过(执行时长、操作、锁、等待锁时长)等条件过滤。
如果发现一个操作太长,把数据库卡死的话,可以用这个命令杀死他:> db.killOp(608605)

  • 设置server级别慢日志
    优化数据库的方式,Mysql也通过设置慢日志方式优化
db.setProfilingLevel()

打开profiling:

0:不保存
1:保存慢查询日志
2:保存所有查询日志

注意:
级别是对应当前的数据库,而阈值是全局的。
查看profiling状态
查看慢查询:system.profile
关闭profiling

3. MongoDB集群性能优化方案

1> 优化方向

  • 硬件(内存、SSD)
  • 收缩数据
  • 增加新的机器、新的副本集
  • 集群分片键选择
  • chunk大小设置
  • 预分片(预先分配存储空间)

2> 存储引擎方面
WiredTiger是3.0以后的默认存储引擎,细粒度的并发控制和数据压缩提供了更高的性能和存储效率。3.0以前默认的MMAPv1也提高了性能。
在MongoDB复制集中可以组合多钟存储引擎,各个实例实现不同的应用需求。

3> 其他优化建议

  • 收缩数据
  • 预分片
  • 增加新的机器、新的副本集
  • 集群分片键选择
  • chunk大小设置

https://www.cnblogs.com/clsn/p/8244206.html#auto_id_14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值