首页 > 编程笔记 > MySQL笔记 阅读:2

MongoDB mongostat和mongotop性能监控命令的用法(非常详细)

MongoDB 开始提供服务后,我们必须了解它的运行状况,如 CPU、内存、硬盘等资源的使用情况,以保证大流量情况下 MongoDB 的正常运行。

MongoDB 提供了两个命令来监控其运行情况,这两个命令分别是 mongostat 和 mongotop。

MongoDB mongostat命令

mongostat 命令是 MongoDB 提供的命令行状态检测命令,该命令可以每秒刷新一次,获取 MongoDB 当前的运行状态,实时显示数据库的读/写、读/写等待队列等情况。

如果数据库运行速度突然变慢或者出现其他问题,那么应首先考虑使用 mongostat 命令来查看 MongoDB 的状态。mongostat 命令的参数如下表所示:

表:mongostat命令的参数
参数 参数描述
insert 每秒的插入数据量
query 每秒的查询数据量
update 每秒的更新数据量
delete 每秒的删除数据量
conn 当前连接数
qr|qw 客户端读/写队列的长度,值为 0 表示运行状态良好,值大于 0 表示服务处理速度慢
ar|aw 活跃客户端的数量
time 当前时间

mongostat 命令既可以连接 mongos 实例,也可以连接 mongod 实例,具体使用方式如下:
root@master:~# mongostat --host my_router --port 27017
此时,终端窗口会以秒为单位不停地打印状态信息。若要查看指定多条信息,可以通过 -n 参数指定具体的条数。mongostat 命令的其他参数可以使用 --help 命令进行查看。

MongoDB mongotop命令

mongotop 命令是 MongoDB 数据库提供的另一个命令行状态检测命令,它只能连接 mongod 实例。

mongotop 命令的参数如下表所示:

表:mongotop命令的参数
参数 功能说明
ns 数据库命名空间,结合数据库名称和集合
total mongod 在这个命名空间花费的总时间
read mongod 在这个命名空间读取所花费的时间
write mongod 在这个命名空间写入所花费的时间

mongotop 命令具体的使用方法与 mongostat 命令差不多,具体操作如下:
root@master:~# mongotop --host my_shard --port 27017 -n 2
除了以上两个性能监控命令,MongoDB 还提供一些数据库级别的监控方法。

例如,查看某个数据库当前执行的操作,可以使用 db.currentOp() 方法;如果某个操作耗费时间过长,那么可以使用 db.killOp(opid)方法停止该操作。

另外,使用 db.setProfilingLevel() 方法可以设置 MongoDB 的 profiler 系统分析器,其中,profiler 系统分析器可用于采集与分析慢操作的数据请求,它在默认情况下是关闭的。查看 profiler 系统分析器的当前级别可以使用 db.getProfilingLevel() 方法,其中,级别值为 0、1、2:
profiler 系统分析器的设置方法如下:
shard_rs:PRIMARY> db.getProfilingLevel()
0
shard_rs:PRIMARY> db.setProfilingLevel(1)
shard_rs:PRIMARY> db.setProfilingLevel(1,{slowms:90})
# slowms 操作阈值为毫秒级,操作所耗费的时间大于此阈值则被认为是慢操作,会被记录到慢操作日志中。
# 该日志所在位置为test数据库下的一个固定集合system.profile

相关文章