首页/数据/NoSQL 速查/currentOp 查看与 killOp 终止
MongoDB99 条

currentOp 查看与 killOp 终止

db.currentOp() 列出正在执行的操作(可按时长、命名空间过滤),发现异常长操作可 killOp 终止。

NoSQL 速查数据更新于 2026-10-13

currentOp 与 killOp

db.currentOp() 列出当前正在执行的操作,可以按时长、命名空间、操作类型过滤,是排查「数据库卡住了」的第一入口:能看到慢查询、锁等待、长时间运行的 DDL。确认某个操作确实该停时,用 db.killOp(opid) 终止它。默认只返回活动操作与系统操作,空闲连接需要显式加 $all: true 才会出现。

基本信息

查看db.currentOp({ "secs_running": { $gte: 3 }, "active": true })
终止db.killOp(<opid>)
权限要求查看需 inprog 权限,终止需 killop 权限
默认范围活动操作与系统操作;加 $all: true 才包含空闲连接
分片集群在 mongos 上执行会向下推送,输出包含各分片的操作信息

典型使用场景

  • 定位长跑查询:按 secs_running 过滤,先看谁在占资源
  • 找锁等待:关注 waitingForLock 与锁类型,判断是否被 DDL 阻塞
  • 索引构建与 DDL 进度:查看 build 类操作的耗时与状态
  • 发现漏索引查询:看 planSummary 是否为 COLLSCAN
  • 连接与线程排查:加 $all 后按 client 过滤,确认连接来源与空闲情况
  • 批量终止前的确认:先统计影响面,再按 opid 逐个处理

常用查询与终止

常用查询与终止
// 运行超过 5 秒且处于活动状态的操作
db.currentOp({ "secs_running": { $gte: 5 }, "active": true })

// 只看某个集合上的操作,并挑出关键字段
db.currentOp({ ns: /^app\.orders/, secs_running: { $gte: 2 } }).inprog.map(function (o) {
  return { opid: o.opid, op: o.op, ns: o.ns, secs: o.secs_running, plan: o.planSummary, client: o.client }
})

// 包含空闲连接,便于查连接来源
db.adminCommand({ currentOp: 1, $all: true, "client": "10.0.0.21:51022" })

// 确认影响面后终止;注意它是安全点终止,未必立即生效
db.killOp(123456789)

输出字段读法

字段含义判读要点
opid操作唯一标识killOp 参数,终止前后各记录一次便于核对
op操作类型(query / update / insert / command / getmore)getmore 多属游标读取,属正常现象
ns命名空间(库.集合)按集合聚类就能看出热点
secs_running已运行秒数秒级阈值按业务预期设定
planSummary执行计划摘要出现 COLLSCAN 说明未命中索引
waitingForLock / waitingForFlowControl等待锁或流控持续等待要找出持锁方或写入压力来源
desc / msg操作来源描述可用于排除复制线程等内部操作
先看再杀:终止前把 ns、op、secs_running 与 planSummary 记下来,既能判断该不该杀,也为后续补索引或改写查询留下依据。
killOp 只在安全点生效:长事务、索引构建等操作可能延迟一段时间才真正停止,批量终止前务必确认影响面。

易错点

  • 误杀复制与内部操作(desc 含 repl 等):会打断同步并触发回补,过滤时先排除内部来源
  • 批量终止时用范围条件一次性杀掉大量操作:可能瞬间清空连接池并造成业务重试风暴,应逐个确认
  • 只看 secs_running 判断慢:等待锁的短操作与被流控阻塞的写操作也需要单独归类
  • 以为 killOp 立即生效就反复重试:它在安全点才中断,重复终止没有额外效果,应观察状态变化

数据来源与参考

  • MongoDB Manual: db.currentOp()
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌