db.killOp() (mongosh 메서드)
설명
db.killOp(opid)
작업 ID에 지정된 대로 작업을 종료합니다. 작업과 해당 ID를 찾으려면
$currentOp
또는db.currentOp()
를 참조하세요.db.killOp()
메서드에는 다음과 같은 매개 변수가 있습니다.Parameter유형설명op
숫자
작업 ID입니다.
경고
실행 중인 작업은 매우 주의해서 종료합니다. 클라이언트가 시작한 작업을 종료할 때는
db.killOp()
만 사용하고 내부 데이터베이스 작업은 종료하지 마십시오.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
MongoDB Atlas는 해당 메서드의 사용을 작업을 실행한 MongoDB 사용자로 제한합니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
샤딩된 클러스터
읽기 작업 종료
db.killOp()
메서드는 mongos
에서 실행할 수 있으며 클러스터에 있는 둘 이상의 샤드에서 실행 중인 쿼리(읽기 작업)를 종료할 수 있습니다.
예를 들어, 샤딩된 클러스터에서 쿼리 작업을 종료하려면 다음을 따릅니다:
클라이언트가 쿼리를 실행한 동일한
mongos
에서localOps: true
으로 집계 파이프라인$currentOp
를 실행하여 종료할 쿼리 작업의 opid를 찾으십시오.use admin db.aggregate( [ { $currentOp : { allUsers: true, localOps: true } }, { $match : <filter condition> } // Optional. Specify the condition to find the op. // e.g. { op: "getmore", "command.collection": "someCollection" } ] ) 중요
클라이언트가 쿼리를 실행한 동일한
mongos
에서 이 집계 작업을 실행해야 합니다.종료할 쿼리 작업을 찾으면
mongos
에서 opid를 사용하여db.killOp()
를 실행합니다.db.killOp(<opid of the query to kill>)
팁
$currentOp
의 localOps
매개 변수.
또는 작업이 실행 중인 샤드 노드에서 읽기 작업을 찾아 종료할 수 있습니다. MongoDB는 작업 중단을 다른 샤드와 mongos
인스턴스에 전파합니다.
작업이 실행 중인 샤드 중 하나에서 종료할 쿼리 작업의 opid를 찾습니다.
use admin db.aggregate( [ { $currentOp : { allUsers: true } }, { $match : <filter condition> } // Optional. Specify the condition to find the op. // e.g. { op: "getmore", "command.collection": "someCollection" } ] ) 종료할 쿼리 작업을 찾으면 샤드 멤버에서 opid를 사용하여
db.killOp()
를 실행합니다.db.killOp(<opid of the query to kill>) MongoDB는 작업 중단을 다른 샤드와
mongos
인스턴스에 전파합니다.
쓰기 작업 중단
- 세션 내에서
MongoDB 드라이버는 승인되지 않은 쓰기를 제외한 모든 작업을 서버 세션과 연결합니다.
쓰기 작업이 세션과 연결된 경우
killSessions
명령을mongos
에서 사용하여 샤드 전체에서 쓰기 작업을 종료할 수 있습니다.mongos
에서 집계 파이프라인$currentOp
를 실행하여lsid
(논리적 세션 id)를 찾습니다.use admin db.aggregate( [ { $currentOp : { allUsers: true, localOps: true } }, { $match : <filter condition> } // Optional. Specify the condition to find the op. // e.g. { "op" : "update", "ns": "mydb.someCollection" } ] ) 반환된
lsid
정보를 사용하여mongos
에서killSessions
명령을 실행하여 샤드에서 작업을 종료합니다.db.adminCommand( { killSessions: [ { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") } ] } )
- 세션 없이
쓰기 작업이 세션과 연결되어 있지 않은 경우 쓰기와 연결된 모든 샤드에서 작업을 찾아서 종료해야 합니다.
mongos
에서 집계 파이프라인$currentOp
을(를) 실행하여 샤드에 대한 쿼리 작업의 opid를 찾습니다.use admin db.aggregate( [ { $currentOp : { allUsers: true } }, { $match : <filter condition> } // Optional. Specify the condition to find the op. ] ) mongos
에서 실행하면$currentOp
"<shardName>:<opid on that shard>"
형식으로 opid를 반환합니다(예:{ "shard" : "shardB", .. "opid" : "shardB:79214", ... }, { "shard" : "shardA", .. "opid" : "shardA:100913", ... }, opid 정보를 사용하여
mongos
에서db.killOp()
를 실행하여 샤드에서 작업을 종료합니다.db.killOp("shardB:79014"); db.killOp("shardA:100813");
액세스 제어
authorization
으로 실행되는 시스템에서 사용자가 소유하지 않은 조치를 종료하려면 사용자에게 killop
권한 조치가 포함된 액세스 권한이 있어야 합니다.