Isso também depende do tipo de consulta que você está disparando. Verifique se os pontos abaixo mencionados estão lá -
- há muitas consultas de agregação? Que tipo de estrutura de coleção você tem, ou seja,
- há muitas matrizes aninhadas?
- É uma instância única ou um conjunto de réplicas? Tente colocar um conjunto de réplicas com leitura e gravação em um nó diferente.
- As consultas estão retornando dados de várias coleções?
- Verifique se sua instância está com falha de página para quanto % de operações?
- Verifique seus logs para operações com alto nscanned ou scanAndOrder durante períodos de alto bloqueio/fila e indexe de acordo.
- Verifique suas consultas para operadores de uso intensivo de CPU, como $all, $push/$pop/$addToSet, bem como atualizações para documentos grandes e, especialmente, atualizações para documentos com matrizes grandes (ou matrizes de subdocumentos grandes).
- se seu banco de dados for pesado para gravação, lembre-se de que apenas uma CPU por banco de dados pode gravar por vez (devido a essa thread que mantém o bloqueio de gravação). Considere mover parte desses dados para seu próprio banco de dados.
Estas são algumas coisas que diminuem o desempenho ao longo do tempo. Eu cobri os casos de uso mais comuns aqui, no entanto, verifique esta postagem para mais alguns insights.