背景
用于故障解决
写在前面
摘自https://www.cnblogs.com/lijiaman/p/13358077.html
link
1.查看MongoDB的连接信息
db.serverStatus().connections
{
"current" : 11,
"available" : 838849,
"totalCreated" : 100,
"active" : 2
}
各个关键词的含义:
current:当前连接数
available:可用连接数
TotalCreated:累计创建线程数
2.使用db.currentOP()方法查看进程信息
注意输出信息较多
db.currentOP()
各个关键词的含义:
opid:进程号
active:是否活跃状态
secs_running:操作运行秒数
microsecs_running:操作运行微秒数
op:操作类型,包括(insert/update/query/remove/getmore/command)
ns:命名空间
query:查询语句
client:连接的客户端信息
desc:描述信息
threadId:线程id
connectionId:连接id
waitingForLock:是否等待获取锁
lockStats.timeLockedMicros.r:持有读锁的时间(微秒)
lockStats.timeLockedMicros.w:持有写锁的时间(微秒)
lockStats.timeAcquiringMicros.r:请求读锁的时间(微秒)
lockStats.timeAcquiringMicros.2:请求写锁的时间(微秒)
2.1 使用db.currentOP()查看所有进程
可以使用 db.currentOP(<operations>) 查看所有进程,operations取值如下:
参数 | 类型 | 描述 |
---|---|---|
operations | boolean or document | – 定义为true,结果包含空闲的连接和系统后台进程 – 定义为document with query conditions ,结果返回符合条件的操作 |
定义为布尔值true,返回全部连接
// 定义为true,返回全部连接,包含active、idle、system
db.currentOP({"$all":true})
//或
db.currentOp(true)
定义为文档,返回符合条件的连接
1.查看等待获取锁的会话
db.currentOP({"waitingForLock" : true})
{
"inprog" : [ ],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1608605514, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1608605514, 1)
}
2.查看db1数据库执行时间超过3秒的活动进程
``
操作xxx集合并且执行时间已超过3s
``
db.currentOP(
{
"active" : true,
"secs_running":{"$gt":3},
"ns":/^xxx\./
}
)
{
"inprog" : [ ],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1608605584, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1608605584, 1)
}
也可以不指定db
db.currentOp(
{ "active" : true, "secs_running" : { "$gt" : 3 }
}
)
3.MongoDB杀死正在执行的进程
db.killOp(opid);
补充
检查oplog日志时间和大小
rs0:PRIMARY>rs.printReplicationInfo()
查看当前连接
db.getMongo()
查看当前所在库名
db
查看版本
db.version();
本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删