db.killOp()
설명
db.killOp(opid)
작업 ID에 지정된 대로 작업을 종료합니다. 작업과 해당 ID를 찾으려면
$currentOp
또는db.currentOp()
를 참조하세요.db.killOp()
메서드에는 다음과 같은 매개 변수가 있습니다.Parameter유형설명op
숫자작업 ID입니다.경고
실행 중인 작업은 매우 주의해서 종료합니다. 클라이언트가 시작한 작업을 종료할 때는
db.killOp()
만 사용하고 내부 데이터베이스 작업은 종료하지 마십시오.
샤딩된 클러스터
읽기 작업 종료
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>)
또는 작업이 실행 중인 샤드 노드에서 읽기 작업을 찾아 종료할 수 있습니다. 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
권한 조치가 포함된 액세스 권한이 있어야 합니다.