Recebi um relatório de um usuário Redis e não tenho certeza do que responder, pois não sou especialista na área de Linux e seu agendador, no entanto, nós (como o projeto Redis) precisamos entender esse tipo de problema especialmente no futuro, como no Redis Cluster, teremos muitas instâncias do Redis executando ao mesmo tempo em uma única caixa. Então, estou pedindo ajuda aqui.
Problema:
- Kernel: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP qui 15 abr 08:05:38 UTC 2010 x86_64 GNU / Linux"
- abundância de RAM livre, nenhum outro processo com E / S significativa.
- Importante , executando em uma grande instância do EC2, não em um servidor real. Eu nunca vi algo assim em um ambiente não virtualizado. A instância do EC2 foi: "Instância extra grande de memória alta 17,1 GB de memória, 6,5 ECU (2 núcleos virtuais com 3,25 unidades de computação EC2 cada), 420 GB de armazenamento da instância local, plataforma de 64 bits" .
Basicamente, quando você reinicia uma grande instância do Redis, o sistema fica tão lento que você não pode mais digitar no shell. Quando o Redis carrega uma instância, ele usa 100% da CPU (carrega os dados o mais rápido possível) e lê o arquivo dump.rdb sequencialmente. A E / S não é particularmente alta, pois o carregamento é vinculado à CPU e não à E / S.
Por que diabos uma caixa com duas CPUs e muita RAM, sem coisas trocadas no disco, deveria basicamente parar de trabalhar com essa carga de trabalho?
Tenho a impressão de que isso tem muito a ver com o fato de ser uma instância do EC2, relacionada à tecnologia de virtualização usada, pois carrego o tempo todo os conjuntos de dados Redis de 24 GB na minha caixa sem nenhum problema (mesmo com outras instâncias do Redis executando com alta carga).
Obrigado por qualquer dica!
Salvatore
Edit : adicionando alguns comentários que recebi do twitter:
from @ezmobius: @antirez A primeira coisa a fazer é experimentá-lo no / mnt ou nas unidades efêmeras locais para ver se a sua escamação do EBS é a segunda, para garantir que não seja a "primeira penalidade de gravação" (pesquise no google) e, se for, você precisa dd 0 através do disco primeiro.
from @dvirsky: @antirez Estou executando muitas instâncias de redis exatamente nesses nós ec2. Eu notei alguma desaceleração no bgsave, mas não nesse fenômeno.