1. 查看当前操作
mongos> db.currentOp()
{
"inprog" : [
{
"shard" : "study",
"type" : "op",
"host" : "2bffe09ec303:27019",
"desc" : "ReplBatcher",
"active" : true,// 操作是否正在执行
"opid" : "study:3427",// 操作的唯一标识符
"numYields" : 0,// 操作释放锁允许其他操作进行的次数
"locks" : {// 描述操作获取锁的类型 },
"waitingForLock" : false,// 操作当前是否处于阻塞并等待结果
},
{
...
"secs_running" : NumberLong(0),// 操作执行时间(秒)
"microsecs_running" : NumberLong(239),// 操作执行时间(微秒)
"op" : "command", // 操作类型
}
],
"ok" : 1,
...
}
1.1 寻找有问题操作

client字段可以跟踪旧版本或者漏洞版本的软件信息

1.2 终止操作
// 传入opid,只有当操作让出时,才能终止操作
> db.killOp('study:2')
1.3 假象

任何在local.oplog.rs上长时间运行的请求及任何回写监听命令都可以被忽略。

MongoDB会长时间运行若干请求,最常见是复制线程和用于分片的回写监听器。

1.4 防止幻象操作

如果MongoDB中请求发生堆积,呢么写操作将堆积在操作系统的套接字缓冲区中。当终止正在进行的写操作时,就会开始处理缓冲区中的写操作。即使客户端停止发送写操作,MongoDB也会处理那些写入缓冲区的操作。

防止幻像写入的最好方法是执行写入确认机制。

2. 计算大小
2.1 文档

获取文档大小

> Object.bsonsize({_id:ObjectId()})
> Object.bsonsize(db.users.findOne())
2.2 集合
// 查看整个集合的信息
> db.movies.stats()
// 以TB为单位获取集合的统计数据
> db.big.stats(1024*1024*1024*1024)
2.3 数据库
// 查看整个数据库的信息
> db.stats()
3. 使用mongotop和mongostat
# mongotop -h localhost:27039
2022-07-24T11:43:55.304+0800 connected to: mongodb://localhost:27039/ ns total read write 2022-07-24T11:43:56+08:00
local.oplog.rs 1ms 1ms 0ms
admin.system.keys 0ms 0ms 0ms
admin.system.roles 0ms 0ms 0ms
admin.system.version 0ms 0ms 0ms
config.actionlog 0ms 0ms 0ms
config.chunks 0ms 0ms 0ms
config.collections 0ms 0ms 0ms
config.lockpings 0ms 0ms 0ms
config.mongos 0ms 0ms 0ms
config.settings 0ms 0ms 0ms
# mongostat -h localhost:27039
// insert query update delete getmore command 每秒操作发生次数简单统计
// flushes 将数据刷新到磁盘的次数
// vsize 所使用虚拟内存数量
// res 正在使用内容大小
// qr|qw 读操作和写操作的队列大小
// ar|aw 有多少活跃的客户端
// net_in net_out 网络传入传出字节数
// conn 连接数
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn set repl time
*0 *0 *1 *0 2 7|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 3.89k 79.6k 16 configRS SEC Jul 24 11:52:41.199
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 524b 74.5k 16 configRS SEC Jul 24 11:52:42.202
*0 *0 *0 *0 0 4|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.06k 76.2k 16 configRS SEC Jul 24 11:52:43.200
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 731b 75.5k 16 configRS SEC Jul 24 11:52:44.200
*0 *0 *0 *0 0 3|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.06k 76.0k 16 configRS SEC Jul 24 11:52:45.200
*0 *0 *0 *0 1 3|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.84k 76.0k 16 configRS SEC Jul 24 11:52:46.199
*0 *0 *0 *0 0 3|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.06k 76.0k 16 configRS SEC Jul 24 11:52:47.200
*0 2 *0 *0 0 2|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.37k 75.9k 16 configRS SEC Jul 24 11:52:48.199
*0 *0 *0 *0 0 3|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 1.06k 76.0k 16 configRS SEC Jul 24 11:52:49.200
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 1.93G 154M 0|0 1|0 731b 75.4k 16 configRS SEC Jul 24 11:52:50.200

欢迎关注公众号算法小生沈健的技术博客

17.MongoDB系列之了解应用程序动态的更多相关文章

  1. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  2. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  3. 微信小程序动态生成保存二维码

    起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...

  4. 14.MongoDB系列之配置分片

    1. 启动服务器 1.1 启动配置服务器 配置服务器是集群的大脑,保存着关于每个服务器包含哪些数据的所有元数据,因此,必须首先创建配置服务器. 由于资源限制,在同一机器上启动三个进程 # mkdir ...

  5. MongoDB源码分析——mongod程序源码入口分析

    Edit 说明:第一次写笔记,之前都是看别人写的,觉得很简单,开始写了之后才发现真的很难,不知道该怎么分析,这篇文章也参考了很多前辈对MongoDB源码的分析,也有一些自己的理解,后续将会继续分析其他 ...

  6. MongoDB系列之二(主动复制)

    目前我正在进行MongoDB的双机热备方面相关的工作.根据我目前看到的MongoDB方面的材料,MongoDB的实际部署有三种方式,分别是“主动复制”,“副本集”以及“分片副本集”. 首先我们从最简单 ...

  7. MongoDB系列二(介绍).

    一.特点 学习一个东西,至少首先得知道它能做什么?适合做什么?有什么优缺点吧? 传统关系型数据库,遵循三大范式.即原子性.唯一性.每列与主键直接关联性.但是后来人们慢慢发现,不要把这些数据分散到多个表 ...

  8. C# WINFORM 应用程序动态读写xml config文件,获取数

    在实际项目里,我们需要用一个应用程序去连接多个数据库,有的进行测试,有的是数据库基本结构相同,数据不同, 我们不可能总去程序的连接字符串里去修改,更不能让用户去修改,所以需要动态去修改连接数据库配置信 ...

  9. 在ASP.NET程序中用程序动态向<head>便签里添加<meta>标签

    在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta> ...

随机推荐

  1. 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)

    现而今,我们纵向的回顾整个大前端的历史,不难发现,人们对前端的审美要求越来越高,越来越严苛,与此同时,人们对追求美的体验是也极致的,从理性到感性,从平面到几何,从现实到虚拟,所以从某种角度来说,作为前 ...

  2. 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机

    鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机 原文转载自「刘悦的技术博客」https://v3u.cn/a_id_176 众所周知,尤文图斯需要一座欧冠奖杯,C罗 ...

  3. 小白之Python基础(一)

    一.数字类型: 1.整形 十进制:默认为十进制:(如:99,100.......) 十六进制: 0x,0X开头的表示16进制数 二进制:0b,0B开头的表示2进制数 八进制: 0o,0O开头的表示8进 ...

  4. http、https和Cookie

    http和https http,https 都是网络传输协议 是用于网络相关传输,http走的是明文传输,https走的密文传输(内部采用对称加密以及非对称加密).对应的https安全性要高于http ...

  5. 解决beego运行程序报错问题:stderr: go: github.com/astaxie/beego@v1.12.1: missing go.sum entry

    使用命令bee new beegodemo02创建beego程序后,使用VScode打开后,便会报错无法运行,报错信息如下: Error loading workspace: err: exit st ...

  6. 多环境配置 - SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 06 -多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local.开发环境 dev.集成测试环境 test.用户接受测试环境 ...

  7. Java学习第七周

    这周学习了集合,stream流等知识 List集合 – List系列集合:添加的元素是有序,可重复,有索引 1.ArrayList: 添加的元素是有序,可重复,有索引 2.LinkedList: 添加 ...

  8. Spring源码 05 IOC 注解方式

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  9. java学习第七天lo流.day17

    lo输入

  10. JavaScript 异步编程(二):Promise

    PromiseState Promise 有一个 [[PromiseState]] 属性,表示当前的状态,状态有 pending 和 fulfill 以及 reject. 从第一个 Promise 开 ...