MongoDB의 현재 작업 세트 크기를 얻는 방법 : 21452, “avgObjSize” :

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

“최상의 성능을 위해서는 대부분의 활성 세트가 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?



답변

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일반적인 권장 사항은 데이터가 메모리에 적합한 지 여부에 대한 프록시로 페이지 결함 메트릭 을 보는 것 입니다.


답변