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. 使用rust调用c++静态库并编译nodejs包

    在项目上经常要用到身份证阅读器.护照阅读仪.指纹仪等各种品牌硬件,假如每套系统的都做集成开发那代码的维护成本将变得很高,为此采用rust来调用厂家提供的sdk c++开发包并封装成nodejs包,用f ...

  2. vue的一些问题

    如有不正,请指正! 目录 1.组件化 2.注册组件 a.创建组件构造器 b.注册组件: c.使用组件 3.组件不能访问vue实例上的数据 4.全局组件与局部组件 5.v-model语法糖 组件通信 6 ...

  3. java Suspicious regex expression "." in call to 'replaceAll()' 问题延展

    因为要处理从身份证读取到的有效期时间,所以用到了replaceAll这个方法,类似如下代码: String s1 = s.replaceAll(".", "-" ...

  4. mosquitto使用的基本流程以及一些遇见的问题

    改配置文件 以记事本的方式打开mosquitto.conf更改部分内容,找到# listener port-number [ip address/host name/unix socket path] ...

  5. 运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践

    我们一直都相信这样一种说法:协程是比多线程更高效的一种并发工作方式,它完全由程序本身所控制,也就是在用户态执行,协程避免了像线程切换那样产生的上下文切换,在性能方面得到了很大的提升.毫无疑问,这是颠扑 ...

  6. 使 Word 段落第一行空出两个字符的位置(段落首行缩进)

    描述 使 Word 段落第一行左突出两个字符的位置,即段落首行缩进的方式有两种. "视图"选项卡--"显示"组--标尺 "开始"选项卡--& ...

  7. 轻松月薪过万,NISP证书含金量有多重|NISP管理中心|网安伴|nisp

    nisp一级证书含金量 NISP一级证书是面向各个行业工作人员信息安全意识普及化和网络信息安全基础培训的国家级验证.持NISP一级证书可以从信息安全保密较高的单位得到加分.证书由中国信息安全测评中心授 ...

  8. Html5新增内容标签

    <canvas>画布</canvas> <audio src=""></audio> <video src="&qu ...

  9. elasticsearch设置密码及Java密码连接

    目录 1. 安装 2. 修改elasticsearch-8.2.2\config\elasticsearch.yml文件里面xpack.security.enabled: false为 3. 重新启动 ...

  10. maven执行跳过测试

    -Dmaven.test.skip=true 例子 mvn clean install -Dmaven.test.skip=true