2014-03-01 4 views
0

나는 Mongo 2.4.9를 사용하며 세 노드에 대한 복제 세트가 있습니다. I는 db.serverStatus를 수행 한() 47기가바이트 MEM을 매핑하고 그 크기가 매우 높다 참조 :. db.stats의MongoDB : 큰 크기의 매핑 된 메모리

db.serverStatus().mem 
{ 
     "bits" : 64, 
     "resident" : 266, 
     "virtual" : 10149, 
     "supported" : true, 
     "mapped" : 47402, 
     "mappedWithJournal" : 65730 
} 

결과 메가 바이트 (1024)

{ 
     "db" : "xxxxx", 
     "collections" : 7, 
     "objects" : 670488, 
     "avgObjSize" : 2890.6140721385023, 
     "dataSize" : 1892697, 
     "storageSize" : 2273304, 
     "numExtents" : 49, 
     "indexes" : 42, 
     "indexSize" : 399378, 
     "fileSize" : 10416128, 
     "nsSizeMB" : 16, 
     "dataFileVersion" : { 
       "major" : 4, 
       "minor" : 5 
     }, 
     "ok" : 1 
} 

"dataSize" : 1848mb 
"storageSize" : 2220mb 
"fileSize" : 10172mb 

은 WorkingSet 정보 :

"workingSet" : { 
     "note" : "thisIsAnEstimate", 
     "pagesInMemory" : 152599, 
     "computationTimeMicros" : 31143, 
     "overSeconds" : 1728 
} 
,536,913,632 10

크기 (Mb) = 152599 * 4kb -> Mb = 596 Mb로 변환

내 질문에 매핑 된 메모리의 크기가 fileSize보다 4,2 배 크고 storageSize 또는 dataSize보다 15159 배 더 큰 이유는 무엇입니까? 매핑 된 메모리 메모리가 계속 느리게 커집니다.

참고 : OS :이 article 읽을 수는 있지만 매핑 된 메모리의 크기가 너무 커서 계정을 고려 이유를 아직도 이해하지

3892Mb

: 레드햇 엔터프라이즈 리눅스 서버 5.7 (Tikanga) 물리적 메모리를 해제 작은 크기의 실제 데이터 (파일 크기).

감사합니다.

답변

2

mongo 인스턴스에 몇 개의 데이터베이스가 있습니까?

매핑의 값은 데이터베이스에 의해, 메가 바이트 (MB)에서, 매핑 된 메모리의 양을 제공합니다 것은 serverStatus 계정에 mapped 필드에 대한이가 모든 데이터베이스를 복용 인스턴스 정보를 제공합니다. MongoDB는 메모리 매핑 파일을 사용하므로이 값은 데이터베이스 또는 데이터베이스의 총 크기와 대략 같을 수 있습니다.

동안 db.stats하십시오 단일 데이터베이스의 사용 상태를 반영

반환 통계.

인스턴스에 다른 데이터베이스가없는 경우 local db의 크기를 살펴보십시오. 이것은 복제 세트의 oplog 크기에 따라 상당히 클 수 있습니다. 주석 TO

답변 :

oplog 크기를 변경하면 사소한 작업을하지 않고 그것이 지연 회원 및 복제 지연에 영향을 미치는 등의 적절한 oplog 크기를 선택하는 것이 매우 중요합니다. 이 글을 먼저 읽으시기 바랍니다. Change the Size of the Oplog.

매핑 된 메모리의 크기가 실제 메모리를 초과하지 않아도되므로 쿼리 성능이 떨어지는 것이 아닙니다. 매핑 된 메모리는 "실제"메모리 할당이 아닙니다.상주 메모리은 mongo가 RAM에 명시 적으로 소유하고있는 용량을 보여줍니다.

작업 세트의 oplog의 부분

은 세컨더리 마스터 뒤에 얼마나 멀리에 의존해야한다.

희망이 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 맞습니다. serverStatus 명령은 모든 데이터베이스에 대한 정보를 반환합니다. 나는 다음과 같은 한 데이터베이스 : 가 (빈) 관리자가 (빈) 설정은 (빈) 지역 24.06640625GB 시험 (빈) MYDB 9.94921875GB 이 oplog.rs 모음의 크기가 27017입니다 > 쇼 데이터베이스 23386Mb = ~ 23GB – user1932034

+0

다음 질문이 있습니다. 초기화 크기를 변경하기 위해 oplog 컬렉션을 안전하게 삭제할 수 있습니까? 매핑 된 메모리의 큰 크기가 실제 메모리가 아닌 크기를 고려한 쿼리의 성능에 영향을 주는지 여부 (32GB> 물리적 4GB 매핑) 데이터 형식이 작업 집합의 일부인지 여부 감사합니다 – user1932034

+0

내 대답 업데이트를 참조하십시오 –

관련 문제