복붙노트

[MONGODB] MongoDB의 메모리 사용량을 제한 할 수있는 옵션이 있습니까?

MONGODB

MongoDB의 메모리 사용량을 제한 할 수있는 옵션이 있습니까?

나는 몽고-DBv1.8.1을 사용하고 있습니다. 내 서버 메모리는 4GB입니다하지만 몽고-DB 3 기가 바이트 이상을 사용한다. 몽고-DB 거기에 메모리 제한 옵션인가?

해결법

  1. ==============================

    1.당신이 MongoDB를 3.2 이상 버전을 실행하는 경우 위에서 언급 한 바와 같이, 당신은 wiredTiger 캐시를 제한 할 수 있습니다.

    당신이 MongoDB를 3.2 이상 버전을 실행하는 경우 위에서 언급 한 바와 같이, 당신은 wiredTiger 캐시를 제한 할 수 있습니다.

    /etc/mongod.conf에서 wiredTiger 파트를 추가

    ...
    # Where and how to store data.
    storage:
      dbPath: /var/lib/mongodb
      journal:
        enabled: true
      wiredTiger:
        engineConfig:
            cacheSizeGB: 1
    ...
    

    이 캐시 1GB의 크기, 문서에서 더 많은 정보를 제한합니다

    이것은 16.04 및 MongoDB를 3.2 우분투 실행, 나를 위해 문제를 해결

    PS는 다음 설정을 변경 한 후, 몽고 데몬을 다시 시작합니다.

    $ sudo service mongod restart
    
    # check the status
    $ sudo service mongod status
    
  2. ==============================

    2.3.2부터, MongoDB를 기본 스토리지 엔진으로 WiredTiger을 사용합니다. 이전 버전의 기본 스토리지 엔진으로 MMAPv1을 사용했다.

    3.2부터, MongoDB를 기본 스토리지 엔진으로 WiredTiger을 사용합니다. 이전 버전의 기본 스토리지 엔진으로 MMAPv1을 사용했다.

    wiredTriggered 캐시를 제한의 .config 파일에 다음 줄을 추가합니다 :

    wiredTigerCacheSizeGB = 1

  3. ==============================

    3.이 질문은 몇 번 요청되었습니다 ...

    이 질문은 몇 번 요청되었습니다 ...

    방법 MongoDB를 사용하는 캐싱을 해제하는 방법 (아래 인용)이 관련 질문 / 대답을 ... 참조하십시오?

    MongoDB를은 (적어도 것) 사용 가능한 메모리를 많이 사용하지만, 실제로는 메모리 해제하도록 지시하는 OS의 VMM에 그것을 잎합니다 (MongoDB를 워드 프로세서에서 캐시를 참조하십시오.)

    당신은 MongoDB를 다시 시작하여 일체의 메모리를 해제 할 수 있어야한다.

    그러나 어느 정도 MongoDB를 정말 메모리를 "사용"하지 않습니다.

    서버 메모리 사용량을 점검 MongoDB를 워드 프로세서에서 예를 들어 ...

    MongoDB를 당신은이 두 가지 질문에 좀 더 많은 정보를 찾을 수 있습니다, 해제하는 "페이지"를 결정하기 위해 LRU (최소 최근에 사용한) 캐시 알고리즘을 사용하여 ...

  4. ==============================

    4.당신은 리눅스에 cgroup을 사용하여 mongod 프로세스 사용을 제한 할 수 있습니다.

    당신은 리눅스에 cgroup을 사용하여 mongod 프로세스 사용을 제한 할 수 있습니다.

    cgroup을 사용하여, 우리의 작업은 몇 가지 간단한 단계에서 수행 할 수 있습니다.

    출처 : 제한 MySQL과 MongoDB를 메모리 사용에 cgroup을 사용하여

  5. ==============================

    5.나는 얼마나 많은 메모리 MongoDB를 사용하는 사용자가 구성 할 수 있다고 생각하지만,의 OK 있음 (아래를 참조)하지 않습니다.

    나는 얼마나 많은 메모리 MongoDB를 사용하는 사용자가 구성 할 수 있다고 생각하지만,의 OK 있음 (아래를 참조)하지 않습니다.

    공식 소스에서 인용 :

    즉, 몽고은 그것을 요구하는 경우에 다른 프로그램이 메모리를 사용하게됩니다.

  6. ==============================

    6.Windows의 경우는, 메모리 MongoDB를 사용하는의 양을 제어 선장 Codeman에서이 튜토리얼을 볼 수 같다 :

    Windows의 경우는, 메모리 MongoDB를 사용하는의 양을 제어 선장 Codeman에서이 튜토리얼을 볼 수 같다 :

    가상화되지 않은 Windows에 제한 MongoDB의 메모리 사용

  7. ==============================

    7.Windows에서 사용자가 Windows 시스템 리소스 관리자 (WSRM)를 사용할 수 있습니다처럼 정말, 제한 메모리 트릭의 몇 가지가있다, 그러나 다른 시스템과의 많은 경쟁없이 사용 메모리에 무료 할 때 일반적으로 몽고는 전용 서버에 최선을 작동합니다.

    Windows에서 사용자가 Windows 시스템 리소스 관리자 (WSRM)를 사용할 수 있습니다처럼 정말, 제한 메모리 트릭의 몇 가지가있다, 그러나 다른 시스템과의 많은 경쟁없이 사용 메모리에 무료 할 때 일반적으로 몽고는 전용 서버에 최선을 작동합니다.

    운영 시스템은 다른 시스템이 너무 높은 메모리 요구 사항이있는 경우이 성능 문제로 이어질 수 실제로 그것을 필요로하는 다른 프로세스에 메모리를 할당하려고합니다 있지만.

    당신이 정말로 한계 메모리에해야하고, 단 하나의 서버가있는 경우 다음 가장 좋은 방법은 가상화이다.

  8. ==============================

    8.이것은이 두 기사에서 지식을 결합하여, cgroup을 수행 할 수 있습니다 : https://www.percona.com/blog/2015/07/01/using-cgroups-to-limit-mysql-and-mongodb-memory-usage/ http://frank2.net/cgroups-ubuntu-14-04/

    이것은이 두 기사에서 지식을 결합하여, cgroup을 수행 할 수 있습니다 : https://www.percona.com/blog/2015/07/01/using-cgroups-to-limit-mysql-and-mongodb-memory-usage/ http://frank2.net/cgroups-ubuntu-14-04/

    현재 우분투 14.04에 대한 설정 및 초기화 파일을 생성하는 작은 쉘 스크립트를 찾을 수 있습니다 : http://brainsuckerna.blogspot.com.by/2016/05/limiting-mongodb-memory-usage-with.html

    그냥 그렇게 :

    sudo bash -c 'curl -o- http://brains.by/misc/mongodb_memory_limit_ubuntu1404.sh | bash'
    
  9. ==============================

    9.

    mongod --wiredTigerCacheSizeGB 2 xx
    
  10. ==============================

    10.당신은 제한 할 수있는 한 가지는 메모리 MongoDB를 사용하는 인덱스를 구축하는 동안의 양입니다. 이것은 maxIndexBuildMemoryUsageMegabytes 설정을 사용하여 설정합니다. 그 설정은 아래 방법의 예 :

    당신은 제한 할 수있는 한 가지는 메모리 MongoDB를 사용하는 인덱스를 구축하는 동안의 양입니다. 이것은 maxIndexBuildMemoryUsageMegabytes 설정을 사용하여 설정합니다. 그 설정은 아래 방법의 예 :

    몽고 --eval "db.adminCommand ({setParameter를 : 1, maxIndexBuildMemoryUsageMegabytes : 70000})"

  11. ==============================

    11.mongod 프로세스가 시스템에서 메모리의 1/2 더 이상 걸릴 것 기본적으로 MongoDB의 캐시를 제한 할 이유가 없다. 기본 스토리지 엔진은 WiredTiger입니다. "WiredTiger으로 MongoDB를 WiredTiger는 내부 캐시 및 캐시 모두 파일 시스템을 이용한다."

    mongod 프로세스가 시스템에서 메모리의 1/2 더 이상 걸릴 것 기본적으로 MongoDB의 캐시를 제한 할 이유가 없다. 기본 스토리지 엔진은 WiredTiger입니다. "WiredTiger으로 MongoDB를 WiredTiger는 내부 캐시 및 캐시 모두 파일 시스템을 이용한다."

    당신은 아마 상단에보고 몽고는 당신의 시스템의 모든 메모리를 사용하고 있다고 가정합니다. 즉 가상 메모리입니다. 무료 -m을 사용하여

                  total        used        free      shared  buff/cache   available
    Mem:           7982        1487        5601           8         893        6204
    Swap:             0           0           0
    

    사용 가능한 통계가 0이 경우에만 디스크에 메모리를 교환하는 컴퓨터입니다. 이 경우 데이터베이스는 사용자의 시스템에 대해 너무 큽니다. 클러스터에 다른 MongoDB의 인스턴스를 추가합니다.

    MongoDB를 사용 얼마나 많은 가상 및 실제 메모리에 대한 정보를 얻을 수있는 mongod 콘솔에서이 두 가지 명령을 사용하여

    var mem = db.serverStatus().tcmalloc;
    
    mem.tcmalloc.formattedString
    
    ------------------------------------------------
    MALLOC:      360509952 (  343.8 MiB) Bytes in use by application
    MALLOC: +    477704192 (  455.6 MiB) Bytes in page heap freelist
    MALLOC: +     33152680 (   31.6 MiB) Bytes in central cache freelist
    MALLOC: +      2684032 (    2.6 MiB) Bytes in transfer cache freelist
    MALLOC: +      3508952 (    3.3 MiB) Bytes in thread cache freelists
    MALLOC: +      6349056 (    6.1 MiB) Bytes in malloc metadata
    MALLOC:   ------------
    MALLOC: =    883908864 (  843.0 MiB) Actual memory used (physical + swap)
    MALLOC: +     33611776 (   32.1 MiB) Bytes released to OS (aka unmapped)
    MALLOC:   ------------
    MALLOC: =    917520640 (  875.0 MiB) Virtual address space used
    MALLOC:
    MALLOC:          26695              Spans in use
    MALLOC:             22              Thread heaps in use
    MALLOC:           4096              Tcmalloc page size
    
  12. ==============================

    12.적어도 캐시 메모리 몽고가 사용하던 취소에이, AWS 인스턴스에서 날 위해 일했습니다. 이 후에는 설정이 영향을 미쳤다 얼마나 볼 수 있습니다.

    적어도 캐시 메모리 몽고가 사용하던 취소에이, AWS 인스턴스에서 날 위해 일했습니다. 이 후에는 설정이 영향을 미쳤다 얼마나 볼 수 있습니다.

    ubuntu@hongse:~$ free -m
                 total       used       free     shared    buffers     cached
    Mem:          3952       3667        284          0        617        514
    -/+ buffers/cache:       2535       1416
    Swap:            0          0          0
    ubuntu@hongse:~$ sudo su
    root@hongse:/home/ubuntu# sync; echo 3 > /proc/sys/vm/drop_caches
    root@hongse:/home/ubuntu# free -m
                 total       used       free     shared    buffers     cached
    Mem:          3952       2269       1682          0          1         42
    -/+ buffers/cache:       2225       1726
    Swap:            0          0          0
    
  13. ==============================

    13.상단에 추가하는 경우에 당신은 메모리가 작은 컴퓨터에있는 대신 전체 숫자의 GBS MBps의에서 wiredTiger 캐시를 구성 할, 이것을 사용, 대답 투표 -

    상단에 추가하는 경우에 당신은 메모리가 작은 컴퓨터에있는 대신 전체 숫자의 GBS MBps의에서 wiredTiger 캐시를 구성 할, 이것을 사용, 대답 투표 -

    storage:
     wiredTiger:
      engineConfig:
        configString : cache_size=345M
    

    소스 - https://jira.mongodb.org/browse/SERVER-22274

  14. from https://stackoverflow.com/questions/6861184/is-there-any-option-to-limit-mongodb-memory-usage by cc-by-sa and MIT license