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. Vue 模板语法 && 数据绑定

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  2. 故障案例 | 一次慢SQL优化分析全过程

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 客 ...

  3. [NCTF2019]True XML cookbook-1|XXE漏洞

    1.打开题目之后和做的上一道:https://www.cnblogs.com/upfine/p/16534940.html题目界面一样,查看源代码等未发现有用信息,界面如下: 2.那就先按原来那道题的 ...

  4. Apache DolphinScheduler 项目笔记 — 1. 问题定位和排查问题

    导语: Yuanhao Ji 同学是<暑期 2021 - API 模块 UT 测试问题解决>项目负责人,本文记录了他是如何排查和定位问题. 1. 背景 问题:在部分 UT 中使用 Powe ...

  5. 新一代大数据任务调度 - Apache DolphinScheduler喜提十大开源新锐项目 & 最具人气项目

    经 10000+ 开发者公开票选,20+专家评审. 10+ 主编团打分,历经数月打磨,11 月 19 日,由InfoQ 发起并组织的[2020中国技术力量年度榜单评选]结果正式揭晓. 2020 年度十 ...

  6. iNeuOS工业互联网操作系统,在航天和军工测控领域的应用

    目       录 1.      行业概述... 2 2.      解决方案... 2 3.      解决的痛点... 6 1.   行业概述 现在国际形势异常严峻,加大了偶发武装斗争的可能性. ...

  7. Luogu3379 【模板】最近公共祖先(LCA) (倍增LCA)

    蒟蒻又来复习模板了.还WA了两次 #include <iostream> #include <cstdio> #include <cstring> #include ...

  8. 微服务性能分析|Pyroscope 集合 Spring Cloud Pig 的实践分享

    随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...

  9. 【java】非常多!学习路径24-总结目前所有知识(上)

    感谢sikiedu.com的siki老师.几年前就开始看siki的课程,最近突然想写这个笔记系列,顺便回顾一下这些基础的知识,同时也希望能帮助到一些人,有问题一起交流哈. 全文共十章,大约1.5万字, ...

  10. C# for循环创建多线程

    这里仅讨论Task多线程编程,不讨论其他可以使用多线程的情况,比如Beginxxx,Thread等 一般情况下,如果有多个线程需要同是启动,且每个线程中使用了集合collection中的序号. 比如参 ...