db.setProfilingLevel()
이 페이지의 내용
정의
db.setProfilingLevel(level, options)
버전 5.0에서 변경됨
mongod
인스턴스의 경우 이 메서드는 데이터베이스 프로파일러를 활성화, 비활성화 또는 구성합니다. 프로파일러는 실행 중인mongod
인스턴스에서 쓰기 작업, 커서 및 데이터베이스 명령의 성능에 대한 데이터를 캡처하고 기록합니다. 프로파일러가 비활성화된 경우 이 메서드는 저속 작업이 진단 로그에 기록되는 방식을 구성합니다.참고
db.setProfilingLevel()
이 포함된 프로파일링 수준의 변경 사항은 지속되지 않습니다. 서버가 다시 시작되면 이 값은0
(기본값) 또는operationProfiling.mode
설정이나--profile
명령줄 옵션으로 설정된 값으로 되돌아갑니다.데이터베이스 프로파일러 수준이
1
또는2
인 경우(특히 데이터베이스 프로파일러가 활성화된 경우) slowms, sampleRate는 프로파일러와diagnostic log
의 동작에 모두 영향을 미칩니다.데이터베이스 프로파일러 수준이
0
일 경우(특히, 데이터베이스 프로파일러가 비활성화된 경우), slowms와 sampleRate는 진단 로그에만 영향을 줍니다.mongos
인스턴스를 사용하면 이 메서드는slowms
,sampleRate
,filter
구성 설정을 설정하여 진단 로그에 작업이 기록되는 방식을 구성합니다.mongos
에는 프로파일러가 쓸 수 있는 컬렉션이 없으므로mongos
인스턴스에 데이터베이스 프로파일러를 활성화할 수 없습니다.mongos
인스턴스의 경우profile
수준은0
이어야 합니다.mongod
및mongos
인스턴스에 필터를 지정하여 프로파일러가 어떤 작업을 기록하도록 할지 제어할 수 있습니다. 프로파일러에filter
를 지정하면 프로파일링 및 느린 쿼리 로그 줄에 slowms 및 sampleRate 옵션이 사용되지 않습니다.db.setProfilingLevel()
은profile
명령에 대한 래퍼(wrapper)를 제공합니다.MongoDB 5.0부터
profile
명령 또는db.setProfilingLevel()
래퍼(wrapper) 메서드를 사용하여 데이터베이스 프로파일러level
,slowms
,sampleRate
또는filter
에 대한 변경 사항이log file
에 기록됩니다.
구문
db.setProfilingLevel()
메서드의 형식은 다음과 같습니다.
db.setProfilingLevel(<level>, <options>)
매개변수
Parameter | 유형 | 설명 | ||||||
---|---|---|---|---|---|---|---|---|
integer | 데이터베이스 프로파일러 수준을 구성합니다. 사용할 수 있는 프로파일러 수준은 다음과 같습니다.
| |||||||
문서 또는 정수 | 선택 사항입니다. 정수 또는 옵션 문서를 사용할 수 있습니다. 문서 대신
|
반환
이 메서드는 해당 설정의 이전 값이 포함된 문서를 반환합니다.
{ "was" : 2, "slowms" : 100, "sampleRate" : 1, "filter" : { "$and" : [ { "op" : { "$eq" : "query" } }, { "millis" : { "$gt" : 20000 } } ] }, "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.", "ok" : 1 }
{ "was" : 0, "slowms" : 100, "sampleRate" : 1, "filter" : { "$and" : [ { "op" : { "$eq" : "query" } }, { "millis" : { "$gte" : 2000 } } ] }, "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.", "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1572991238, 1), "signature" : { "hash" : BinData(0,"hg6GnlrVhV9MAhwWdeHmHQ4T4qU="), "keyId" : NumberLong("6755945537557495811") } }, "operationTime" : Timestamp(1572991238, 1) }
{ "was" : 0, "slowms" : 100, "sampleRate" : 1, "filter" : { "$and" : [ { "op" : { "$eq" : "query" } }, { "millis" : { "$gte" : 2000 } } ] }, "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.", "ok" : 1, "operationTime" : Timestamp(1572991499, 2), "$clusterTime" : { "clusterTime" : Timestamp(1572991499, 2), "signature" : { "hash" : BinData(0,"nhCquIxUw7thlrBudXe3PnsnvP0="), "keyId" : NumberLong("6755946491040235540") } } }
구제척으로:
was
는 이전 수준 설정입니다.slowms
는 이전 slowms 설정입니다.sampleRate
는 이전 sampleRate 설정입니다.filter
는 이전 필터 설정입니다.note
는filter
의 동작을 설명하는 문자열입니다. 이 필드는filter
도 있는 경우에만 출력에 나타납니다.
참고
filter
및 note
필드는 이전 수준 설정에 있었던 경우에만 출력에 나타납니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()
를 참조하세요.
행동
경고
프로파일링은 성능을 저하시키고 시스템 로그에서 암호화되지 않은 쿼리 데이터를 노출시킬 수 있습니다. 프로덕션 배포서버에서 프로파일러를 구성하고 활성화하기 전에 이것이 성능과 보안에 미치는 영향을 신중하게 고려하세요.
잠재적인 성능 저하에 대한 자세한 내용은 프로파일러 오버헤드를 참조하십시오.
예시
프로파일러 활성화 및 저속 작업 임계값과 샘플 속도 설정
다음은 mongod
인스턴스에서 설정할 수 있는 값의 예입니다.
프로파일링 수준을
1
로 설정합니다.느린 작업 임계값 slowms:
20
밀리초sampleRate:
0.42
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()
를 참조하세요.
프로파일러 비활성화 및 저속 작업 임계값과 샘플 속도 설정
다음은 mongod
또는 mongos
인스턴스에서 설정할 수 있는 값의 예입니다.
프로파일링 수준을
0
로 설정합니다.느린 작업 임계값 slowms:
20
밀리초sampleRate:
0.42
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()
를 참조하세요.
프로파일링될 작업을 결정하기 위한 필터 설정
다음은 mongod
인스턴스에서 설정할 수 있는 값의 예입니다.
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()
를 참조하세요.
필터 설정 해제
프로필 필터를 지우려면 filter: "unset"
옵션으로 db.setProfilingLevel()
을 실행합니다.
db.setProfilingLevel( 1, { filter: "unset" } )
이 작업은 이전 설정 값이 포함된 문서를 반환합니다.
현재 프로파일링 수준을 보려면 db.getProfilingStatus()
를 참조하세요.