문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

db.setProfilingLevel()

이 페이지의 내용

  • 정의
  • 구문
  • 매개변수
  • 반환
  • 행동
  • 예제
  • 프로파일러 활성화 및 저속 작업 임계값과 샘플 속도 설정
  • 프로파일러 비활성화 및 저속 작업 임계값과 샘플 속도 설정
  • 프로파일링될 작업을 결정하기 위한 필터 설정
  • 필터 설정 해제
db.setProfilingLevel(level, options)

버전 5.0에서 변경됨

mongod 인스턴스의 경우, 이 메서드는 데이터베이스 프로파일러를 활성화, 비활성화 또는 구성합니다. 프로파일러는 실행 중인 mongod 인스턴스의 쓰기 작업, 커서, 데이터베이스 명령의 성능에 대한 데이터를 캡처하고 기록합니다. 프로파일러가 비활성화된 경우 이 메서드는 저속 작업이 진단 로그에 기록되는 방식을 구성합니다.

참고

db.setProfilingLevel()이 포함된 프로파일링 수준의 변경 사항은 지속되지 않습니다. 서버가 다시 시작되면 이 값은 0(기본값) 또는 operationProfiling.mode 설정이나 --profile 명령줄 옵션으로 설정된 값으로 되돌아갑니다.

데이터베이스 프로파일러 수준1 또는 2 인 경우(특히 데이터베이스 프로파일러 가 활성화된 경우), slowms, sampleRate 는 프로파일러와 diagnostic log 모두의 동작에 영향을 미칩니다.

데이터베이스 프로파일러 수준0 인 경우(특히 데이터베이스 프로파일러 가 비활성화된 경우), slowmssampleRate 는 진단 로그에만 영향을 미칩니다.

mongos 인스턴스를 사용하면 이 메서드는 slowms, sampleRate, filter 구성 설정을 설정하여 진단 로그에 작업이 기록되는 방식을 구성합니다. mongos에는 프로파일러가 쓸 수 있는 컬렉션이 없으므로 mongos 인스턴스에 데이터베이스 프로파일러를 활성화할 수 없습니다. mongos 인스턴스의 경우 profile 수준은 0이어야 합니다.

mongod mongos 및 인스턴스 모두에 필터 를 지정하여 프로파일러가 어떤 작업을 기록할지 제어할 수 있습니다.filter 프로파일러에 를 지정하면 프로파일링 및 느린 쿼리 로그 줄에 slowmssampleRate 옵션이 사용되지 않습니다.

db.setProfilingLevel()profile 명령을 감싸는 래퍼를 제공합니다.

MongoDB 5 부터 시작.0, profile 명령 또는 db.setProfilingLevel() 래퍼 메서드를 사용하여 데이터베이스 프로파일러 level, slowms, sampleRate 또는 filter 에 수행한 변경 사항은 log file 에 기록됩니다.

db.setProfilingLevel() 메서드의 형식은 다음과 같습니다.

db.setProfilingLevel(<level>, <options>)
매개변수
유형
설명
레벨
integer

데이터베이스 프로파일러 수준을 구성합니다. 사용할 수 있는 수준은 다음과 같습니다.

수준
설명
0
프로파일러가 꺼져 있고 데이터를 수집하지 않습니다. 이것이 기본 설정된 프로파일러 수준입니다.
1

프로파일러는 slowms 값보다 오래 걸리거나 필터와 일치하는 작업에 대한 데이터를 수집합니다.

필터가 설정된 경우:

2
프로파일러가 모든 작업의 데이터를 수집합니다.

mongos 에서는 프로파일링을 사용할 수 없으므로 db.setProfilingLevel() 를 사용하여 mongos 인스턴스에서 프로파일링 수준을 0 이외의 값으로 설정할 수 없습니다.

문서 또는 정수

선택 사항. 정수 또는 옵션 문서를 허용합니다. 문서 대신 options 인수로 정수 값이 전달되면 해당 값이 slowms 에 할당됩니다. 다음 옵션을 사용할 수 있습니다.

기본값: 100
유형: 정수

느린 작동 시간 임계값(밀리초 단위)입니다. 이 임계값보다 오래 실행되는 작업은 느린 것으로 간주됩니다.

logLevel0으로 설정하면, MongoDB는 slowOpSampleRate 의해 결정되는 속도로 느린 작업을 진단 로그에 기록합니다.

logLevel 설정이 높으면 지연 시간에 관계없이 모든 작업이 진단 로그에 표시되지만, 세컨더리에 의한 느린 oplog 항목 메시지 로깅은 예외입니다. 세컨더리는 느린 oplog 항목만 기록합니다. logLevel 를 늘려도 모든 oplog 항목이 기록되지는 않습니다.

mongod 2} 인스턴스의 경우 이 설정은 진단 로그와 프로파일러(사용 설정된 경우)에 모두 영향을 줍니다.

mongos 인스턴스의 경우, mongos에서는 프로파일링을 사용할 수 없으므로 이 설정은 진단 로그에만 영향을 미치고 프로파일러에는 영향을 미치지 않습니다.

참고

이 인수는 구성 파일 옵션 slowOpThresholdMs와 동일한 설정에 영향을 줍니다.

기본값: 1.0
유형: 더블

프로파일링하거나 기록해야 하는 저속 작업의 비율입니다. sampleRate에 0과 1(두 값 모두 포함) 사이의 값을 사용할 수 있습니다.

mongod 2} 인스턴스의 경우 이 설정은 진단 로그와 프로파일러(사용 설정된 경우)에 모두 영향을 줍니다.

mongos 인스턴스의 경우, mongos에서는 프로파일링을 사용할 수 없으므로 이 설정은 진단 로그에만 영향을 미치고 프로파일러에는 영향을 미치지 않습니다.

참고

이 인수는 구성 옵션 slowOpSampleRate와 동일한 설정에 영향을 줍니다.

유형: 객체

프로파일링되고 기록되는 작업을 제어하는 필터 표현식입니다. 필터 표현식의 필드는 프로파일러 출력의 모든 필드가 될 수 있습니다.

mongod 2} 인스턴스의 경우 이 설정은 진단 로그와 프로파일러(사용 설정된 경우)에 모두 영향을 줍니다.

mongos 인스턴스의 경우, mongos에서는 프로파일링을 사용할 수 없으므로 이 설정은 진단 로그에만 영향을 미치고 프로파일러에는 영향을 미치지 않습니다.

기록된 작업을 제어하는 데 사용되는 필터의 예는 프로파일링된 작업을 결정하기 위한 필터 설정을 참조하세요.

참고

프로파일링 필터 가 설정되면 slowmssampleRate 옵션은 진단 로그 또는 프로파일러에 영향을 주지 않습니다.

이 메서드는 해당 설정의 이전 값이 포함된 문서를 반환합니다.

구제척으로:

  • was이전 레벨 설정입니다.

  • slowms이전 slowms 설정입니다.

  • sampleRate 이전 sampleRate 설정입니다.

  • filter이전 필터 설정입니다.

  • notefilter 의 동작을 설명하는 문자열입니다. 이 필드는 filter 도 있는 경우에만 출력에 나타납니다.

참고

filternote 필드는 이전 수준 설정에 있었던 경우에만 출력에 나타납니다.

현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.

경고

프로파일링은 성능을 저하시키고 시스템 로그에서 암호화되지 않은 쿼리 데이터를 노출시킬 수 있습니다. 프로덕션 배포서버에서 프로파일러를 구성하고 활성화하기 전에 이것이 성능과 보안에 미치는 영향을 신중하게 고려하세요.

잠재적인 성능 저하에 대한 자세한 내용은 프로파일러 오버헤드를 참조하십시오.

다음은 mongod 인스턴스에서 설정할 수 있는 값의 예입니다.

db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })

이 작업은 이전 설정 값이 포함된 문서를 반환합니다.

현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.

다음은 mongod 또는 mongos 인스턴스에서 설정할 수 있는 값의 예입니다.

db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })

이 작업은 이전 설정 값이 포함된 문서를 반환합니다.

현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.

다음은 mongod 인스턴스에서 설정할 수 있는 값의 예입니다.

  • 프로파일링 수준1 으로 설정합니다.

  • { op: "query", millis: { $gt: 2000 } } 필터 를 사용하면 프로파일러가 2 초 이상 소요된 query 작업만 기록합니다.

db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )

이 작업은 이전 설정 값이 포함된 문서를 반환합니다.

현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.

프로필 필터를 지우려면 filter: "unset" 옵션으로 db.setProfilingLevel()을 실행합니다.

db.setProfilingLevel( 1, { filter: "unset" } )

이 작업은 이전 설정 값이 포함된 문서를 반환합니다.

현재 프로파일링 수준을 보려면 db.getProfilingStatus()를 참조하세요.

← db.setLogLevel()