mongodb下cpu高的查询方式(慢查询)
1.查看mongodb进程 ps-ef | grep mongo 获取进程id为3267
2.查看进程的线程 top -p 3267 按shift+h 查看cpu高的线程,发现有线程点用cpu高且cpu时间很长,有线程的cpu时间有23分钟,说明一直有线程在消耗cpu,要找到执行这个线程在具体做什么操作
找到目前占用cpu最高的线程id为46265,该线程占用cpu 85.2%现在,如下图。

3.查看mongo进程3267的各线程系统调用情况
pstack 3267 >stack.log 导出到stack.log 见附件 stack.log 发现了290个线程如下图
从线程中找出上面的id为46265线程如下图,下图中红线画出的就是操作系统中给mongo的进程3267分配的线程id:46265,这个46265对应的mongo堆客栈中的线程id即为下图中白色的横线处的16进制的id:0x7f2311c18700

将16进程的0x7f2311c18700 转换为10进制
printf %d 0x7f230dad7700 结果
139788530054912
如下图红线中所示

上面红线中的数字非常重要,上面这个数字即为接下来要查找问题的关键
4.查看mongo当前有哪些操作,
执行命令:db.currentOp(true); 如下图所示,在结果中查找 139788530054912 找到如下图所示的查询操作,下面的这个threadId对就的操作即为刚才用cpu高的查更新操作,

到此就找出了占用cpu高的mongo的操作,此次为更新操作导致该线程占用cpu高。
本文结合操作系统的堆栈调用命令pstack 和mongodb的命令db.currentOp(true);快速定位cpu占用高的mongo操作。希望对大家有所帮助。
为了方便查看,可以开启mongo的慢日志记录,操作如下
1.查看mongodb慢日志是否开起
use BJ_Rack;
db.getProfilingStatus();
发现没有开户慢日志
2.开启慢日志,设置超过100毫秒的操作为慢操作
db.setProfilingLevel(1,100);
3.查看慢日志内容
db.system.profile.find().sort({$natural:-1})
得到50个比较慢的操作日志,

详情见附件 mongodb慢日志的操作
上面日志中最高的操作时间差不多2秒
慢日志对mongo性能分析很有用,建议在测试的时候都开启。
mongodb下cpu高的查询方式(慢查询)的更多相关文章
- Hibernate各种查询方式及查询策略(转)
转自:https://www.cnblogs.com/xujingyang/p/6734203.html 在了解Hibernate的基本知识后,重点让我们看下相关查询方式和查询优化策略吧! 话不多说, ...
- AE中地图查询方式
樱木 原文 AE中地图查询方式 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1 Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者 ...
- (十)Hibernate 查询方式
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 查询方式简介 1,导航对象图查询方式: 2 ...
- mysql数据库的十种查询方式及多表查询
--mysql数据库的十种查询方式 -- (1)查询时起别名 SELECT id AS '编号',NAME AS '姓名',age AS '年龄' FROM student; -- (2)查询时添加常 ...
- Druid 0.17入门(4)—— 数据查询方式大全
本文介绍Druid查询数据的方式,首先我们保证数据已经成功载入. Druid查询基于HTTP,Druid提供了查询视图,并对结果进行了格式化. Druid提供了三种查询方式,SQL,原生JSON,CU ...
- C#复习笔记(4)--C#3:革新写代码的方式(查询表达式和LINQ to object(下))
查询表达式和LINQ to object(下) 接下来我们要研究的大部分都会涉及到透明标识符 let子句和透明标识符 let子句不过是引入了一个新的范围变量.他的值是基于其他范围变量的.let 标识符 ...
- 【原创】查询占CPU高的oracle进程
1:首先使用TOP命令传到占用CPU高的SPID号 PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND3575 oracle 1 12 ...
- 线上服务器CPU彪高的调试方式
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/2fee7b91-f ...
- Expert 诊断优化系列------------------你的CPU高么?
现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...
随机推荐
- LabView和DLL中的参数问题
注意:在LabView中调用DLL函数时,一定要指定对应的参数类型,而不是选择“Adapt to Type”,否则会出错,不知道为什么书上是要选择“Adapt to Type”. 以下做个参考: 转自 ...
- 两步实现在Git Bash中用Sublime打开文件
每次都要用鼠标点来点去才能用sublime打开文件!太不科学!今天来配置一下在Git bash中用sublime打开文件 方法 新建一个文件命名为你想要的命令,比如 subl(注意不能有后缀名),内容 ...
- bzoj1612 / P2419 [USACO08JAN]牛大赛Cow Contest(Floyd)
P2419 [USACO08JAN]牛大赛Cow Contest Floyd不仅可以算最短路,还可以处理点之间的关系. 跑一遍Floyd,处理出每个点之间是否有直接或间接的关系. 如果某个点和其他$n ...
- 20145311 实验一 "Java开发环境的熟悉"
20145311 实验一 "Java开发环境的熟悉" 程序设计过程 实验内容 -实现四则运算,并进行测试 编写代码 1.四则运算就四种运算,我就做了个简单的,输入两个数,然后选择一 ...
- 【转】集群/分布式环境下5种session处理策略
转载至:http://blog.csdn.net/u010028869/article/details/50773174 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处 ...
- linux 系统忘记登录密码
linux6/6.5再启动时,按e ->在输入行最后面 输入空格 再输入single ->启动设置密码即可 单用户模式 在centos7需要 按e -> 然后滚动列表,找到ro(ro ...
- UVA-10806 Dijkstra, Dijkstra. (最小费用流,网络流建模)
题目大意:给一张带权简单图,找出一条经过起点s和终点t的最小回路. 题目分析:建立网络,以s为源点,t为汇点,另每条边的容量为1,单位费用为边权值.求最小费用流,增广两次后的最小费用便是答案. 代码如 ...
- C#接口作用
1.C#接口的作用 : C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正 ...
- offsetParent.scrollTop IE下一直报错,说“缺少对象”
<div style="position:fiexd; top:135px;_position: absolute; right: 0pt; _top:expression_r(off ...
- @pathVariable的作用
//url中的id 可通过@pathVariable绑定到函数的参数中