Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / / /

느린 쿼리 모니터링

$currentOp 집계 단계는 MongoDB 에서 현재 실행 모든 작업에 대한 정보를 제공합니다. 애플리케이션 에 성능 문제가 발생하는 경우 이 단계를 중심으로 집계 파이프라인 빌드 느린 쿼리 및 유사한 문제를 모니터 할 수 있습니다.

이 작업은 $currentOp 를 사용하여 현재 애플리케이션에서 실행 중인 느린 쿼리를 식별합니다. 지정된 기간 내에 느린 쿼리를 모두 찾으려면 프로파일러를 사용하는 것이 좋습니다.

프로파일러
설명

Atlas 쿼리 프로파일러

Atlas 고객에게 산점도 차트 제공하여 느린 쿼리와 성능 이상값을 쉽게 식별할 수 있습니다.

쿼리 성능 정보를 컬렉션 에 저장하여 특정 성능 문제가 있는 쿼리를 MongoDB 쿼리 할 수 있습니다.

Atlas 쿼리 프로파일러 와 데이터베이스 프로파일러 모두 서버 성능에 영향을 미치고, 디스크 공간을 사용하며, 암호화됨 필드 주변의 쿼리 메타데이터 노출할 수 있습니다. 활성화하기 전에 성능 및 보안에 미치는 영향을 고려하세요.

이 작업 성능 문제가 있는 쿼리를 식별합니다. 성능 문제가 있는 쿼리를 이미 알고 있는 경우 느린 쿼리 설명 을 참조하여 문제를 해결하세요.

1

$currentOp 집계 단계를 사용하여 MongoDB 에서 현재 작업을 조회 .

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true } },
{ $match: { secs_running: { $gt: 2 } } },
{ $sort: { secs_running: 1 } }
] )
[
{
"opid": "12345",
"secs_running": 5,
"active": true,
"ns": "sample_mflix.movies",
"command": {
"find": "movies",
"filter": { "title": { "$regex": "The" } }
},
"planSummary": "COLLSCAN",
"locks": { ... },
"client": "203.0.113.25:43210"
}
]

이 집계 파이프라인 클러스터 의 모든 현재 작업을 검색합니다. 그런 다음 $match 집계 단계에서는 2초 이상 실행 된 작업으로 작업을 필터링합니다. 이를 통해 지정된 기간 내에 실행 되는 쿼리를 필터하다 할 수 있습니다. 애플리케이션 및 데이터베이스 요구 사항에 맞게 값을 조정합니다.

$sort 단계는 optime 오름차순으로 결과를 정렬합니다.

2

currentOp.active 필드 봅니다. currentOp.active 이(가) true인 경우, MongoDB 작업이 현재 실행 을 나타냅니다.

장기 실행 작업을 중지하려면 db.killOp() 메서드를 사용하여 지정된 opid를 중지합니다.

3

currentOp.waitingForLock 필드 봅니다. currentOp.waitingForLocktrue인 경우 서버 또는 클러스터 에서 실행 다른 작업이 쿼리 차단하고 있는 것입니다.

차단된 작업을 중지하려면 db.killOp() 메서드를 사용하여 지정된 opid를 중지합니다.

4

currentOp.planSummary 필드의 값을 확인합니다.

IXSCAN
쿼리 인덱스 스캔을 수행했음을 나타냅니다.
COLLSCAN
쿼리 전체 컬렉션 스캔 수행했음을 나타냅니다. 이 문제를 해결하려면 인덱스를 생성하세요.
5

$currentOp 집계 단계에서 추가 조사가 필요한 쿼리 반환하는 경우 explain() 메서드를 사용하여 쿼리 계획 및 실행 통계를 분석 .

자세한 내용은 느린 쿼리 설명을 참조하세요.

돌아가기

느린 쿼리 찾기

이 페이지의 내용