17.MongoDB系列之了解应用程序动态
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系列之了解应用程序动态的更多相关文章
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- mongodb系列之---副本集配置与说明
在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...
- 微信小程序动态生成保存二维码
起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...
- 14.MongoDB系列之配置分片
1. 启动服务器 1.1 启动配置服务器 配置服务器是集群的大脑,保存着关于每个服务器包含哪些数据的所有元数据,因此,必须首先创建配置服务器. 由于资源限制,在同一机器上启动三个进程 # mkdir ...
- MongoDB源码分析——mongod程序源码入口分析
Edit 说明:第一次写笔记,之前都是看别人写的,觉得很简单,开始写了之后才发现真的很难,不知道该怎么分析,这篇文章也参考了很多前辈对MongoDB源码的分析,也有一些自己的理解,后续将会继续分析其他 ...
- MongoDB系列之二(主动复制)
目前我正在进行MongoDB的双机热备方面相关的工作.根据我目前看到的MongoDB方面的材料,MongoDB的实际部署有三种方式,分别是“主动复制”,“副本集”以及“分片副本集”. 首先我们从最简单 ...
- MongoDB系列二(介绍).
一.特点 学习一个东西,至少首先得知道它能做什么?适合做什么?有什么优缺点吧? 传统关系型数据库,遵循三大范式.即原子性.唯一性.每列与主键直接关联性.但是后来人们慢慢发现,不要把这些数据分散到多个表 ...
- C# WINFORM 应用程序动态读写xml config文件,获取数
在实际项目里,我们需要用一个应用程序去连接多个数据库,有的进行测试,有的是数据库基本结构相同,数据不同, 我们不可能总去程序的连接字符串里去修改,更不能让用户去修改,所以需要动态去修改连接数据库配置信 ...
- 在ASP.NET程序中用程序动态向<head>便签里添加<meta>标签
在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta> ...
随机推荐
- 用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑
大家好,又见面了. 今天我们一起聊一聊JAVA中的函数式接口.那我们首先要知道啥是函数式接口.它和JAVA中普通的接口有啥区别?其实函数式接口也是一个Interface类,是一种比较特殊的接口类,这个 ...
- 神器 利器 Typora
用typora编辑真的实在太爽了! gooooooooooooooooooooooooooooooood! 支持html可以实现好看的排版! 支持latex实在是太棒了! 不过默认不支持,要去首选项里 ...
- [题解]Balance
1.题目 POJ-1837 2.题目大意 一个天平上有一些钩子,现在有一些砝码.给出每个钩子到原点(姑且这么叫吧)的距离(-15 ~ 15,负数代表在左边,正数相反)以及砝码的重量(1 ~ 20),求 ...
- 统计 Word 文档字数的方式
描述 欲统计某文档的字数,有两种方式. "审阅"选项卡--"校对"组--字符统计 点击左下角字数统计 审阅查看字数 此步骤较为复杂,在审阅选项卡中可以查询文档的 ...
- Excelize 2.5.0 正式发布,这些新增功能值得关注
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...
- web监听器解析
监听器是web三大组件之一,事件监听机制如下: 事件:某个事件,如果初始化上下文 事件源:事件发生的地方 监听器:一个对象,拥有需要执行的逻辑 注册监听:将事件.事件源.监听器绑定在一起.当事件源发生 ...
- 在DispatcherServlet.class中的,获取方法值中获取到的都是arg值
原先java虚拟机中在编译是不带着方法的形参的名称,但是在jdk8中是可以带了 只需要在Settings中设置以下: -parameters 再把out文件中的production文件删到在查询bui ...
- 简单创建一个SpringCloud2021.0.3项目(三)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上俩篇教程 3. Gateway集成sentinel,网关层做熔断降级 1. 超时熔断降级 2. 异常熔断 3. 集成sentine ...
- RTSP播放器或RTMP播放器常用的Evnet事件回调设计
很多开发者在开发RTSP或RTMP播放器的时候,不晓得哪些event回调事件是有意义的,针对此,我们以大牛直播SDK(github)的Android平台RTSP/RTMP直播播放端为例,简单介绍下常用 ...
- 手写tomcat——编写一个echo http服务器
核心代码如下: public class DiyTomcat1 { public void run() throws IOException { ServerSocket serverSocket = ...