MongoDB killOp 案例详解

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

MongoDB killOp 案例详解

张友东 2019-05-23 13:21:54 浏览4375
展开阅读全文

MongoDB 提供 currentOp 命令,列出当前正在执行的查询操作,并提供 killOp 命令,用于中止一些耗时比较长,影响线上业务的操作,作为一种应急手段。

下图是一个 currentOp 命令的输出项之一,用户在获取到 opid 后,调用 killOp() 并没有把这个请求干掉。

_2019_05_23_12_25_34

为什么 opid 是负数?

opid 在 mongod 里是一个 uint32 类型的整数,当你从 mongo shell 里看到 opid 为负数时,说明你的 mongod 已经成功执行超过21(INT32_MAX)次请求了,相当牛逼。

MongoDB 客户端与server是通过 BSON 来交换数据的,而在 bson 标准里,是没有 uint32 类型的,所以 opid 最终是以 int32 传递给客户端的,shell 拿到这个opid,当这个值

网友评论

登录后评论
0/500
评论
张友东
+ 关注
所属云栖号: 阿里云数据库ApsaraDB