MongoDB의 현재 작업 세트 크기를 얻는 방법


9

로부터 문서 , 그것이 말했다,

"최상의 성능을 위해서는 대부분의 활성 세트가 RAM에 맞아야합니다."

예를 들어, 내 db.stats()

{
"db" : "mydb",
"collections" : 16,
"objects" : 21452,
"avgObjSize" : 768.0516501957859,
"dataSize" : 16476244,
"storageSize" : 25385984,
"numExtents" : 43,
"indexes" : 70,
"indexSize" : 15450112,
"fileSize" : 469762048,
"ok" : 1
}

어느 값이 working set size?


답변:


9

SO 질문 / 대답 코멘트에 양자로 연결이 올바른지은 "작업 세트는"기본적으로 시스템에서 사용 / 활성화 할 데이터 및 인덱스의 양입니다.

db.stats()RAM에 전체 데이터 세트와 전체 색인이 필요하다고 생각하지 않는 한 그 내용을 알 수 없습니다 . 즉, 해당 데이터베이스에 대한 최대 작업 세트를 해결할 수 있지만 실제 활성 작업 세트는 해결할 수 없습니다. 최대 값은 다음의 합입니다.

  1. dataSize- 이 데이터베이스에 보유 된 데이터의 총 크기
  2. indexSize- 이 데이터베이스에서 작성된 모든 인덱스의 총 크기

귀하의 경우, 붙여 넣은 출력을 고려할 때 최대 값은 약 30.45 MiB입니다.

실제 메모리 사용량을 추적하려면 db.stats()무료 모니터링 도구 ( MMS )에서 사용 가능한 그림 과 메모리 그래프 (특히 상주 메모리) 의 조합을 권장합니다 .

업데이트 (2013 년 4 월 8 일) :

버전 2.4 는 workingStatus Size EstimatorserverStatus 명령에 추가했습니다. 이는 추정치 일 뿐이며, 참고 용으로 사용할 수 있으며 위의 다른 수치 및 추정치가 MongoDB 인스턴스에 적합한 지 확인할 수 있습니다.

업데이트 (2016 년 9 월) :

내 원래의 대답에서 3 년이 지났고 일이 훨씬 더 복잡합니다. 일반적으로 데이터의 크기와 색인을 얻는 것이 좋은 출발점입니다. 그러나 MongoDB에서 파악하는 것은 현재 사용중인 스토리지 엔진에 따라 다릅니다. 또한 버전 3.0은 콜렉션 레벨 잠금 작업의 일부로 MMAP에 대해 위에 링크 된 작업 세트 추정기를 제거했습니다 ( SERVER-13783 참조 ). 제 (예를 들어) 지금이 캐시 통계 에 대한 WiredTiger새 엔진 점프를 만든 가정 대체 엔진. 의 경우 MMAP일반적인 권장 사항은 데이터가 메모리에 적합한 지 여부에 대한 프록시로 페이지 결함 메트릭 을 보는 것 입니다.


실제로 나는 MMS이미 사용 하고 있지만 볼 그림이 확실하지 않습니다.
Howard

일반적으로 메모리 그래프의 상주 수치가 가장 관련이 있습니다. 데이터 세트가 RAM보다 상당히 큰 경우 시간이 지남에 따라 증가하고 사용 가능한 모든 RAM (새 데이터를 페이징하는 데 필요한만큼 오래된 데이터가 페이징 아웃 됨)을 차지합니다. 그렇지 않은 경우 데이터 세트가 상당히 정적 인 경우 더 낮은 레벨을 찾은 후 마우스를 가져갑니다. 위에서 설명한 최대 값은 개별 데이터베이스가 해당 수치의 일부로 차지하는 최대 RAM입니다.
Adam C

1
MongoDB 3.0부터 serverStatus 명령은 더 이상 작업 세트 크기 추정을 포함하지 않습니다. docs.mongodb.com/manual/reference/command/serverStatus
Vince Bowdren

1
3-4 년 안에 상황이 많이 바뀌 었습니다. 원본을 남겨두고 최신 버전의 옵션 중 일부를 다루기 위해 udpate를 추가했습니다.
Adam C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.