Tenha cuidado ao executar várias instâncias do mongod em um host. Eles estão competindo na unitização do sistema:
Ou execute VMs com RAM e CPU dedicadas (essa é a maneira que você pode usar o 24Core System de maneira mais eficiente com o MongoDB;)
Minha configuração: Eu tenho 2 hosts e 2 shards cada.
.
Há também um terceiro host que atua como árbitro.
Eu tenho 50 threads escrevendo aleatoriamente para ambos os shards (usando um hash) via mongos com REPLICA_SAFE WriteConcern definido em cada inserção.
As perguntas:
Tenha cuidado ao executar várias instâncias do mongod em um host. Eles estão competindo na unitização do sistema:
Ou execute VMs com RAM e CPU dedicadas (essa é a maneira que você pode usar o 24Core System de maneira mais eficiente com o MongoDB;)
Sivann,
Parece que você está usando o mongo < 2.0 se você não for, isso pode mudar as coisas. Você diz que está usando o REPLICA_SAFE, qual nível de W está usando? Se for w: 1, então você está simplesmente confirmando que as gravações do seu primário foram bem-sucedidas, você deve usar w: 2 para confirmar que as gravações atingiram o seu secundário.
A replicação será responsável por isso. Suas inserções estão tomando um bloqueio de gravação conforme elas são inseridas e isso está impedindo a replicação de ler os dados para replicar.
Reforça o ponto 1. Suas leituras de replicação estão enfileiradas atrás das gravações das inserções. Falhas são provavelmente o problema aqui, já que o seu sistema precisa mapear para a RAM coisas que devem ser lidas para replicação que está produzindo seu bloqueio. Também é provável que você esteja vendo a disputa entre suas duas primárias pela RAM pelas razões mencionadas por Marc.
Parece baixo, mas não pode ser certo. É provável que seus sistemas estejam aguardando para enviar dados para a RAM ou para um bloqueio de gravação para replicá-los.
Você pode ver quais conexões vão para onde de dentro dos arquivos de log. Sem saber o que é onde eu não poderia dizer o porquê. Dito isso, o número de conexões aqui não parece irracional.