Em um sistema operacional Debian 6 de 64 bits com 4 núcleos de CPU e 8 GB de RAM, posso reproduzir um problema com mongostat.
Sempre que eu crio um índice, reIndex ou mesmo um índice em segundo plano, de acordo com top
, a carga da CPU é de 40-60% e a RAM está preenchendo até 90%. Enquanto a tarefa de índice está em execução, tento mongostat
observar a carga da CPU. Imediatamente, a carga da CPU é quase 100% e bloqueia.
mongostat
conectado a: 127.0.0.1
Nada depois disso, apenas carga da CPU no limite até Ctrl + C para parar o mongostat. Poucos segundos depois, a carga da CPU cai para ~ 50% e tudo está bem novamente.
Tentando mongostat
novamente com o mesmo comportamento...
O mongodb está esperando mais CPUs ou o que há de errado?
O problema raiz aqui é a construção do índice - quando você está construindo um índice, você o faz (por padrão) em primeiro plano e bloqueia todas as outras operações (incluindo a
mongostat
votação). Além disso, a construção do índice requer classificação externa, que é computacionalmente intensiva e IO potencialmente significativa. Em termos de quantidade de CPU e IO que você deve esperar, o tamanho do índice, o número de chaves e a quantidade de dados determinarão isso - geralmente, quanto mais dados você tiver e mais complexo o índice, mais longo e mais caro este processo será.Para evitar esse problema, você pode definir seu índice para criar em segundo plano , embora deva observar que, até que a correção para SERVER-2771 esteja disponível em uma versão estável (verificada em 2.5.0 no momento da redação desta resposta), os índices serão criados em primeiro plano em secundários (e, portanto, ainda bloqueando operações). É por isso que este guia para criar índices em conjuntos de réplicas ainda é leitura obrigatória para criar índices grandes em um conjunto.
Finalmente, em termos de por
mongostat
que piorou as coisas do ponto de vista da CPU - é provável que não seja possível pesquisar com êxito devido à operação de bloqueio da construção do índice e isso está se manifestando como aumento da CPU até você matarmongostat
. Isso deve ser muito fácil de reproduzir e (dependendo do nível de impacto da CPU e da versão que você está usando) pode ser motivo para registrar um bug. Se isso ainda acontecer com uma criação de índice em segundo plano, conforme descrito acima, isso seria muito mais preocupante.