MongoDB中如何强制终止正在处理中的请求

概述

本文主要介绍MongoDB中如何强制终止正在处理中的请求。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

MongoDB中某个请求正在被处理中且未结束,是可以强制终止该请求的,但在终止该请求前,需要分析该请求,具体信息请参考以下内容。

  1. 通过Mongo Shell连接实例。
    说明:关于如何连接实例,详情请参见Mongo Shell连接单节点实例Mongo Shell连接副本集实例Mongo Shell连接分片集群实例
  2. 执行db.currentOp()命令,查看数据库当前正在执行的操作。
    说明:执行该命令后,关于输出各参数的说明请参考如下:
    • client:该请求是由哪个客户端发起的。
    • opid:操作的唯一标识符。
    • secs_running:表示该操作已经执行的时间,单位为秒。
    • microsecs_running:表示该操作已经执行的时间,单位为微秒。
    • ns:该操作目标集合。
    • op:表示操作的类型。通常是查询、插入、更新、删除中的一种。
    • locks:跟锁相关的信息。
  3. 针对上一步获取的各操作信息,确认异常请求的opid
    说明:一般由于业务需要,导致实例CPU使用率上升,业务响应缓慢,此时建议重点关注secs_running和microsecs_running两个参数,如果该字段返回的值特别大,需要查看请求是否合理。
  4. 执行以下命令,终止异常请求。
    db.killOp([$OPID])
    说明:[$OPID]为需要终止请求的opid。

适用于

  • 云数据库MongoDB版