Eu tenho uma instância autônoma do MongoDB em execução no Windows. Recentemente, ele apresentou lentidão e minha solução de problemas encontrou os seguintes sintomas.
- A lentidão normalmente ocorre após uma consulta de pesquisa de texto completo em uma coleção enorme. Eu acho que isso ocorre porque ele troca muitas páginas na coleção do disco para a memória, portanto, os dados de outras coleções são extraídos da memória.
- O uso da memória do servidor é limitado em torno de 55%. O servidor (Win2012) tem 32 GB de memória, mas o MongoDB não está tentando utilizar além de 16 GB.
Eu vi algumas perguntas e respostas sobre como limitar o uso de memória do MongoDB, mas não sobre como encorajar o MongoDB a ser mais ganancioso.
Alguém teria experiência com problema semelhante?
- MongoDB: 3.2.0
- Mecanismo de armazenamento: wiredTiger
- SO: Win2012
- Memória: 32 GB
Obrigado
Descobri o porquê, aqui está a explicação.
wiredTiger tem um limite de tamanho de cache padrão de 60% RAM - 1 GB, deve ser substituído em um sistema com grande memória.
Verifique se o tamanho do índice deve caber na RAM e também com o WiredTiger, o MongoDB utiliza o cache do WiredTiger e o cache do sistema de arquivos.
Para sistemas com até 10 GB de RAM, a nova configuração padrão é menor ou igual à configuração padrão 3.0 (para MongoDB 3.0, o cache WiredTiger usa 1 GB ou metade da RAM física instalada, o que for maior).
Para sistemas com mais de 10 GB de RAM, a nova configuração padrão é maior que a configuração 3.0.
Através do cache do sistema de arquivos, o MongoDB usa automaticamente toda a memória livre que não é usada pelo cache do WiredTiger
https://docs.mongodb.com/manual/core/wiredtiger/