Eu teria que dar uma olhada melhor na tendência ao longo do tempo para ter certeza aqui ( MMS ajudaria), mas você pode estar se deparando com um problema em que atingiu a memória residente máxima para o MongoDB nessa instância - as falhas de página não são tão altas, mas vejo uma pequena queda na memória residente. Se houver pressão de memória em outro lugar (de outro processo), você pode estar removendo páginas do MongoDB e / ou ter que paginar para o disco com mais freqüência do que deveria (uma página para o disco no EBS é bastante lenta).
Existem algumas coisas que você pode fazer para tornar o uso de RAM mais eficiente aqui:
- Remova índices desnecessários - eles só ocupam RAM valiosa se usados - bons candidatos para remoção são índices únicos que são o elemento mais à esquerda de um índice composto em outro lugar. Isso realmente dependerá do seu uso e esquema aqui para o que pode ser removido, então tudo que eu posso dar são recomendações gerais.
- Ajuste a leitura antecipada no volume do EBS down - isso é contra o que você lerá sobre o ajuste dos volumes do EBS em geral, mas o ajuste de leitura muito alto é um empecilho no uso de memória quando o perfil de acesso é aleatório ao contrário de seqüencial.
Para dar uma olhada nas configurações de leitura antecipada de um volume, execute este comando (requer privilégios root / sudo):
sudo blockdev --report
A saída listará algo assim:
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 10737418240 /dev/xvda1
A coluna RA (em 256, que acredito ser o padrão na Amazon) é o que queremos ajustar aqui. Você faz isso executando algo assim:
blockdev --setra <value> <device name>
Para o exemplo acima, eu começaria cortando pela metade o valor:
blockdev --setra 128 /dev/xvda1
Eu entro em mais detalhes sobre o quão baixo você deve definir esse valor e o raciocínio por trás dele em esta resposta se você gostaria de saber mais. Observe que a alteração requer que uma reinicialização do processo mongod entre em vigor.
Depois de ter feito as duas coisas, você poderá extrair mais desempenho da RAM naquela instância do xlarge. Se não, ou se a pressão da memória vem de outro lugar e ser mais eficiente não é suficiente, então é hora de obter mais RAM.
Atualizando o armazenamento do EBS para um volume RAID como você mencionou ou usando o novo Instâncias de IOPS provisionadas e EBS otimizadas (ou os nós SSD Cluster Compute se você tiver dinheiro para queimar) ajudarão a parte" lenta "das operações (paginação do disco), mas nada supera os benefícios da memória operações - eles ainda são uma ordem de magnitude mais rápida, mesmo com as melhorias do subsistema de disco.