共计 1520 个字符,预计需要花费 4 分钟才能阅读完成。
自动写代码机器人,免费开通
如何在 mongodb 中使用 mongostat 监控工具?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
mongostat 是 mongodb 自带的状态检测工具,在命令行下使用,会间隔固定时间获取 mongodb 的当前运行状态,并输出。
1、mongostat 常用命令格式:
mongostat –host 192.168.11.11:27017 –username root –password 12345678 –authenticationDatabase admin
mongostat 参数说明:
–host : 指定 IP 地址和端口,也可以只写 IP,然后使用 –port 参数指定端口号
–username:如果开启了认证,则需要在其后填写用户名
–password : 不用多少,肯定是密码
–authenticationDatabase:若开启了认证,则需要在此参数后填写认证库(注意是认证上述账号的数据库)
命令输出格式
2、各字段解释说明:
insert/s : 官方解释是每秒插入数据库的对象数量,如果是 slave,则数值前有 *, 则表示复制集操作
query/s : 每秒的查询操作次数
update/s : 每秒的更新操作次数
delete/s : 每秒的删除操作次数
getmore/s: 每秒查询 cursor(游标) 时的 getmore 操作数
command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0), 分表代表 本地 | 复制命令
注:一秒内执行的命令数比如批量插入,只认为是一条命令(所以意义应该不大)
dirty: 仅仅针对 WiredTiger 引擎,官网解释是脏数据字节的缓存百分比
used: 仅仅针对 WiredTiger 引擎,官网解释是正在使用中的缓存百分比
flushes:
For WiredTiger 引擎:指 checkpoint 的触发次数在一个轮询间隔期间
For MMAPv1 引擎:每秒执行 fsync 将数据写入硬盘的次数
注:一般都是 0,间断性会是 1,通过计算两个 1 之间的间隔时间,可以大致了解多长时间 flush 一次。flush 开销是很大的,如果频繁的 flush,可能就要找找原因了
vsize:虚拟内存使用量,单位 MB(这是 在 mongostat 最后一次调用的总数据)
res: 物理内存使用量,单位 MB(这是 在 mongostat 最后一次调用的总数据)
注:这个和你用 top 看到的一样, vsize 一般不会有大的变动,res 会慢慢的上升,如果 res 经常突然下降,去查查是否有别的程序占用大量内存。
qr: 客户端等待从 MongoDB 实例读数据的队列长度
qw:客户端等待从 MongoDB 实例写入数据的队列长度
ar: 执行读操作的活跃客户端数量
aw: 执行写操作的活客户端数量
注:如果这两个数值很大,那么就是 DB 被堵住了,DB 的处理速度不及请求速度。看看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了
netIn:MongoDB 实例的网络进流量
netOut:MongoDB 实例的网络出流量
注:此两项字段表名网络带宽压力,一般情况下,不会成为瓶颈
conn: 打开连接的总数,是 qr,qw,ar,aw 的总和
注:MongoDB 为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数,maxIncomingConnections,阿里工程师建议在 5000 以下,基本满足多数场景
看完上述内容,你们掌握如何在 mongodb 中使用 mongostat 监控工具的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节