mongodb系列~mongodb慢语句(2)
一简介:今天遇到一个慢日志的排查和解决过程
二 版本:3.0.6
三 架构:分片集群
四 具体过程
1 程序响应很慢,具体日志寻找定点sql(mongodb慢日志记录在log日志里)
awk '$NF~/ms$/{print $1,$NF}' shard2.log|sed 's/ms//g'|awk '$2 > 12000 {print $1,$2}' 这里我统计的是大于12S的,
2 通过分析定位具体sql为查询语句,条件是等值查询
3 获取collection的所有索引
db.chenfeng.getIndexes(); 可以发现并没有查询条件的字段为索引
4 在线添加索引
db.chenfeng.ensureIndex({"riqi":1}) 在这时候发现一直在卡住
mongo --eval "printjson(db.currentOp())" 发现此操作处于锁等待状态,于是改为后台执行
db.killOp(opid) 干掉进程(这里补充下,mongodb的session即便kill,也需要很久才能释放,相当的无语_
5 后台添加索引
db.chenfeng.ensureIndex({"riqi":1},{background:true})
这里要注意两点
1 后台执行的意思是不阻塞DML操作,但是本身执行命令会卡住,所以我们采用nohup执行
nohup mongo --eval " db.chenfeng.ensureIndex({"riqi":1},{background:true})" &
2 处在后台创建索引的进程是否完成,一定要依赖于explain 定位索引
db.system.indexes.find() db.chenfeng.getIndexes() 命令都可以查看后台添加的索引,但是这并不代表已经完成,所以查询语句依然会可能应用不到索引(我整整用了一下午排坑)
mongodb系列~mongodb慢语句(2)的更多相关文章
- mongodb系列~ mongodb慢语句(3)
简介: 关于mongodb慢日志是如何收集 一 mongodb慢日志的开启 1 直接设置参数,不重启服务:db.setProfilingLevel(1) 2 添加启动参数,重启服务:添加profile ...
- mongodb系列~ mongodb慢语句(1)
1 简介:讲讲mongo的慢日志2 慢日志类型 query insert update delete 3 查看慢日志 1 db.system.profile.find() 慢日志总揽 2 d ...
- mongodb系列~mongodb的副本集(1)
一 简介: mongodb副本集 二 复制方式: 1 全量复制 2 增量复制三 同步检测过程: 一 正常情况下: 1 master执行语句,并将所有的修改数据库的操作以日志Oplog ...
- mongodb系列~mongodb定时删除数据
一 简介:本文介绍创建自动删除数据的TTL索引 二 目的 定时删除数据三 创建方法 db.collection.createIndex(keys, options) options: ex ...
- mongodb系列~mongodb集群介绍与管理
mongodb 集群维护1 简介 谈谈mongodb的集群架构2 常用的维护命令 1 查看状态 sh.status() 1 version 2 shards: ...
- mongodb系列~mongodb数据迁移
一 简介:今天来聊聊mongo的数据迁移二 迁移 1 具体迁移命令 nohup mongodump --port --db dbname --collection tablename --qu ...
- mongodb系列之-治理mongodb->db.currentOp()
mongodb系列之-管理mongodb->db.currentOp() 管理mongodb->db.currentOp(), 绝对是原创... 今天公司的dba在内部分享了针对mysql ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列二
简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql ...
随机推荐
- BZOJ2938[Poi2000]病毒——AC自动机
题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段,试问,是否 ...
- BZOJ5252 八省联考2018林克卡特树(动态规划+wqs二分)
假设已经linkcut完了树,答案显然是树的直径.那么考虑这条直径在原树中是怎样的.容易想到其是由原树中恰好k+1条点不相交的链(包括单个点)拼接而成的.因为这样的链显然可以通过linkcut拼接起来 ...
- 洛谷 P1053 篝火晚会 解题报告
P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官".在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有 ...
- eclipse --- 新建JSP页面默认模版设置
设置 在eclipse中新建 jsp时是这样的: 有时候我们不想字符集是ISO_8859-1,想字符集是UTF-8,一个个修改会很麻烦,那么我们可以修改jsp模版的设置: window>Pref ...
- HashMap 与 ConcurrentHashMap 在初始化不同大小容量时,实际分配的空间情况
HashMap.java int capacity = 1; int initialCapacitys[] = {1,2,3,4,5,6,7,8,9,10,11,13,15,16,17,2 ...
- Persits.Jpeg CMYK-to-RGB
这几天发现有几个用户上传的图片显示一个“红叉叉”,用迅雷下载一看,原来图片的“模式”是CMYK,这样的模式是不能在IE中正常显示的. 我想起能不能用程序自动转换呢? 在网上看到利用Persits.Jp ...
- http和https的作用与区别
PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密.防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名.另外是加密,加密需要一个密钥交换算法, ...
- Sublime Text3—系统设置
摘要 软件的设置分为系统设置和快捷键设置两项,这次分享系统设置,Sublime Text3-自带快捷键介绍前面已分享过. 正文 菜单依次选择Preferences | Settings,我们修改设置不 ...
- TCP UDP 封包过程
数据封装 注: Ethernet 协议规定 DatalinkHeader 是 14 bytes,分别是6字节目的MAC地址.6字节源MAC地址.2字节数据包类型: 4字节FCS(frame check ...
- Docker跨主机网络解决方案
前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑.肯定会用到多台,因为他们都是内部私有ip,那么多台主机之间的容器如何通信?这个是个很头疼的问题!目前主流几种方法如下:1. ...