背景
以下内容可配合起来解决故障排查
写在前面
监控哪些: CPU、内存、磁盘I/O、应用程序(MongoDB)、进程监控(ps -aux)、错误日志监控
db.serverStatus()
原文摘要
一些内部状态可以查看:
db.serverStatus()
查看实例运行状态(内存使用、锁、用户连接等信息) 通过比对前后快照进行性能分析
"connections" # 当前连接到本机处于活动状态的连接数
"activeClients" # 连接到当前实例处于活动状态的客户端数量
"locks" # 锁相关参数
"opcounters" # 启动之后的参数
"opcountersRepl" # 复制想关
"storageEngine" # 查看数据库的存储引擎
"mem" # 内存相关
db.stats()
显示信息说明:
"db" : "test" ,表示当前是针对"test"这个数据库的描述。想要查看其他数据库,可以先运行$ use databasename(e.g $use admiin).
"collections" : 3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.
"objects" : 5,表示当前数据库所有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。
mongostat
mongostat在功能上类似于UNIX / Linux文件系统实用程序vmstat
mongostat -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin
参数 参数说明
insert 每秒插入量
query 每秒查询量
update 每秒更新量
delete 每秒删除量
conn 当前连接数
qr|qw 客户端查询排队长度(读|写)最好为0,如果有堆积,数据库处理慢。
ar|aw 活跃客户端数量(读|写)
time 当前时间
mongotop
mongotop提供了一种跟踪MongoDB实例读取和写入数据的时间量的方法
mongotop -h 10.0.0.160:27017 -ukemeadmin -p123456 --authenticationDatabase admin
参数说明:
ns:数据库命名空间,后者结合了数据库名称和集合。
total:mongod在这个命令空间上花费的总时间。
read:在这个命令空间上mongod执行读操作花费的时间。
write:在这个命名空间上mongod进行写操作花费的时间。
db 级别命令
db.currentOp()
查看数据库当前执行什么操作。
用于查看长时间运行进程。
通过(执行时长、操作、锁、等待锁时长)等条件过滤。
如果发现一个操作太长,把数据库卡死的话,可以用这个命令杀死他:
> db.killOp()
db.serverStatus()
db.stats()
本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删