Estamos usando o MongoDB há várias semanas, a tendência geral que vimos foi que o mongodb está usando muita memória (muito mais do que todo o tamanho de seu conjunto de dados + índices).
Eu já li essa pergunta e essa pergunta , mas nenhuma parece abordar o problema que estou enfrentando; na verdade, elas estão explicando o que já foi explicado na documentação.
A seguir estão os resultados dos comandos htop e show dbs .
Eu sei que o mongodb usa E / S mapeada na memória, portanto, basicamente, o sistema operacional lida com o armazenamento em cache de coisas na memória, e o mongodb deveria, teoricamente, deixar sua memória em cache quando outro processo solicitar memória livre , mas pelo que vimos, isso não acontece.
OOM começa e acaba com outros processos importantes, como postgres, redis etc. (Como pode ser visto, para superar esse problema, aumentamos a RAM para 183 GB, que agora funciona, mas é bastante cara. O mongo está usando ~ 87 GB de RAM, quase 4X do tamanho de todo o conjunto de dados)
Tão,
- Essa quantidade de memória é realmente esperada e normal? (De acordo com a documentação, o WiredTiger usa no máximo ~ 60% da RAM para seu cache, mas considerando o tamanho do conjunto de dados, ele possui dados suficientes para conseguir 86 GB de RAM?)
- Mesmo que o uso de memória seja esperado, por que o mongo não larga sua memória alocada, caso outro processo comece a solicitar mais memória? Vários outros processos em execução estavam sendo constantemente eliminados pelo linux oom, incluindo o próprio mongodb, antes de aumentarmos a RAM e tornar o sistema totalmente instável.
Obrigado !