Resolver problemas

Nesta página, explicamos vários cenários de erro e fornecemos orientações para resolver os erros.

Cenários de replicação

Esta seção explica problemas de replicação que podem ocorrer com sua instância.

Como você monitora atrasos de replicação?

O Memorystore for Valkey tem a métrica /instance/replication/maximum_offset_diff. Essa métrica monitora a diferença máxima de deslocamento de replicação (em bytes) para um nó em uma instância principal.

Ao manter baixa a diferença de compensação de replicação, as réplicas podem realizar operações de sincronização incremental com mais frequência e a um custo menor do que as operações de sincronização completa.

Recomendamos que você defina um limite para a métrica maximum_offset_diff. Se o limite for excedido, o Memorystore para Valkey poderá enviar um alerta.

Com base no tipo de nó da sua instância, recomendamos que você defina o limite da seguinte maneira:

  • Se o tipo de nó for shared-core-nano, custom-pico, custom-micro, custom-mini, standard-small, highmem-medium, highcpu-medium ou standard-large, defina o limite como menos de 64 MB.

  • Se o tipo de nó for highmem-xlarge ou highmem-2xlarge, defina o limite como menos de 1 GB.

O que fazer se houver um atraso na replicação entre a instância principal e as réplicas?

Pode haver um atraso significativo na replicação se a instância principal tiver muitas operações de gravação e as réplicas não conseguirem acompanhar para replicar essas operações. Para resolver esse problema, recomendamos que você dimensione a capacidade da instância aumentando o número de fragmentos.

Cenários de uso da CPU

Esta seção explica os problemas de uso da CPU que sua instância pode encontrar.

O que fazer se o buffer de saída da sua instância ficar sem espaço?

Se o buffer de saída da sua instância do Memorystore for Valkey ficar sem espaço, faça o seguinte:

Quando a memória da instância está cheia e uma nova gravação chega, o Memorystore for Valkey remove as chaves para liberar espaço para a gravação com base na política maxmemory da instância. A política allkeys-lru remove as chaves usadas menos recentemente (LRU, na sigla em inglês) de todo o conjunto de chaves.

Recomendamos que você monitore o maxmemory e a memória usada da instância. Isso ajuda você a saber se a instância atinge a capacidade provisionada. Além disso, ao reduzir o valor do parâmetro maxmemory, você ganha mais espaço para o custo indireto.

Por que as métricas externas podem estar faltando na sua instância?

Se a instância tiver alta utilização da CPU ou se os recursos dela se esgotarem (por exemplo, por ter muitas conexões), a instância poderá apresentar um comportamento inadequado e as métricas externas poderão estar ausentes.

Como você isola a origem da latência da sua instância?

Para determinar se a latência que você está enfrentando se origina da sua instância, do aplicativo cliente ou do ambiente de rede, use a ferramenta valkey-cli para executar um teste contínuo de latência.

Para isolar a origem da latência da instância, faça o seguinte:

  1. Conecte-se a uma VM do Compute Engine localizada na mesma região e rede VPC que sua instância.

  2. Se ele ainda não estiver instalado, instale a ferramenta valkey-cli na sua VM.

    • Para VMs baseadas em Debian ou Ubuntu, execute o seguinte comando:

      sudo apt-get install valkey-tools
      
    • Para VMs baseadas em RHEL ou CentOS, execute o seguinte comando:

      sudo yum install valkey-tools
      
  3. Para medir a latência da instância em milissegundos, execute o seguinte comando:

    redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
    

    Se a instância usar criptografia em trânsito, adicione a flag --tls e especifique as autoridades de certificação (CAs) para se conectar.

    Faça as seguintes substituições:

    • ENDPOINT_ADDRESS: o endereço IP do endpoint da instância.
    • PORT: o número da porta reservada para o endpoint da sua instância. Normalmente, esse número é 6379.
  4. Deixe o comando ser executado por alguns minutos. A ferramenta envia pings continuamente ao servidor e calcula os valores de latência mínima, máxima e média.

  5. Para interromper o comando e ver os resultados, pressione Ctrl+C.

Se o comando gerar uma latência média consistentemente baixa (normalmente 1 milissegundo ou menos), a instância estará íntegra e respondendo rapidamente.

Se o comando mostrar uma latência consistentemente baixa, mas o aplicativo cliente ainda apresentar atrasos, os seguintes problemas podem estar causando a latência:

  • Rede: o tráfego roteado entre diferentes regiões ou zonas entre seu cliente e a instância pode causar atrasos significativos na rede.
  • Cliente: o uso alto de CPU ou memória no cliente, o esgotamento dos pools de conexões ou gargalos na lógica do aplicativo podem aumentar o tempo de retorno total que o cliente enfrenta.

Cenários de gerenciamento de memória

Esta seção explica os problemas de gerenciamento de memória que sua instância pode encontrar.

Qual métrica você pode usar para determinar se a instância está com estresse de memória?

Para monitorar o uso da memória de uma instância do Memorystore for Valkey, recomendamos que você consulte a métrica /instance/memory/maximum_utilization. Se o uso da memória da instância se aproximar de 80% e você esperar que o uso de dados aumente, escalone verticalmente o tamanho da instância para melhorar o desempenho e abrir espaço para novos dados.

Cenários de monitoramento

Esta seção explica os problemas de monitoramento que sua instância pode encontrar.

Como configurar alertas para o Memorystore para Valkey?

Use o Cloud Monitoring para definir alertas que avisam se alguma métrica exceder os limites definidos para sua instância. Para mais informações sobre como definir alertas no Cloud Monitoring, consulte Definir um alerta do Monitoring para uso da memória.

Cenários de gerenciamento de conexões

Esta seção explica problemas de gerenciamento de conexões que sua instância pode encontrar.

O que fazer se você atingir o limite de conexão ou receber um tempo limite de conexão?

Quando você atinge o limite de conexões, o cliente não consegue se conectar ao servidor. Isso é conhecido como uma rejeição de conexão.

Se isso acontecer, faça o seguinte:

Cenários de tempo limite

Esta seção explica os problemas de tempo limite que sua instância pode encontrar.

Se você receber um tempo limite de E/S, o que fazer?

Quando uma operação de leitura ou gravação no Memorystore para Valkey não é concluída em um período especificado, ocorre um tempo limite de E/S. Esse tempo limite pode ocorrer por vários motivos. Por exemplo, um ou mais nós da sua instância podem estar sobrecarregados.

Se você receber um tempo limite de E/S, faça o seguinte:

  • Use a métrica instance/cpu/maximum_utilization para determinar o uso da CPU de um nó na sua instância, de 0,0 (0%) a 1,0 (100%). Recomendamos que todos os nós tenham uma porcentagem de utilização da CPU inferior a 80%. Para mais informações, consulte Práticas recomendadas de uso da CPU.
  • Quando o cliente se desconecta do servidor porque o tempo limite do servidor expira, tente de novo com espera exponencial e com instabilidade. Isso ajuda a evitar que vários clientes sobrecarreguem o servidor simultaneamente.

Cenários de erro de conectividade

Esta seção explica problemas de conectividade que sua instância pode encontrar.

Erro de conexão causado por regras de firewall

Se você não permitir as portas corretas no firewall, a instância poderá encontrar erros de conexão porque o firewall pode bloquear as portas que o Memorystore para Valkey usa.

Para todos os endpoints do Private Service Connect da instância, é necessário permitir a porta TCP 6379 e as portas TCP de 11000 a 13047. Para mais informações sobre esses endpoints, consulte Endereços de rede reservados.

Erro de conexão causado por políticas da organização

É possível ter uma política da organização que bloqueia as conexões do Private Service Connect com sua instância do Memorystore para Valkey.

Se a política da organização usar a política .restrictPrivateServiceConnectProducer, adicione à lista de permissões o número da pasta 672235397475, que é uma pasta específica para o Memorystore para Valkey. Exemplo:

name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
    rules:
      - values:
          allowedValues:
          - under:folders/672235397475

Se a política da organização usar a política .disablePrivateServiceConnectCreationForConsumers, coloque SERVICE_PRODUCERS na lista de permissões. Exemplo:

name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
    rules:
      - values:
          allowedValues:
          - SERVICE_PRODUCERS

Erro de conexão causado por conexões sem resposta

Recomendamos configurar o aplicativo cliente para detectar conexões sem resposta com o Memorystore for Valkey. Quando uma conexão sem resposta é detectada, o cliente precisa redefini-la. Para criar um aplicativo resiliente, recomendamos as seguintes configurações de cliente:

  • Configure os parâmetros de sinal de atividade do TCP: defina os parâmetros TCP keepalive time, TCP keepalive interval e TCP keepalive probes para que os clientes detectem e descartem proativamente conexões sem resposta, mesmo quando elas estão inativas. Por exemplo, se você definir o parâmetro TCP keepalive time como 30 segundos, TCP keepalive interval como 10 segundos e TCP keepalive probes como 3, os clientes vão redefinir as conexões ociosas sem resposta em um minuto.
  • Configure tempos limite de usuário do TCP: defina esse tempo limite nos clientes para redefinir conexões com solicitações pendentes e parar de responder. Por exemplo, se você definir o tempo limite como 15 segundos, os clientes vão redefinir as conexões sem resposta que tiverem solicitações pendentes após 15 segundos.

Como lidar com erros em instâncias com o modo de cluster desativado

  • Se o aplicativo se conectar ao endpoint de leitura de uma instância sem réplicas de leitura, a conexão será fechada e a mensagem de erro ERR no replicas found vai aparecer. Nesse caso, tente conectar o aplicativo ao endpoint principal ou adicione réplicas de leitura à instância.

  • Em caso de failover, as conexões atuais do aplicativo serão fechadas, e a mensagem de erro ERR role change occurred vai aparecer. Essa mensagem de erro também aparece se o aplicativo se conectar ao endpoint de leitura de uma instância e todas as réplicas de leitura da instância falharem. Nesse caso, o aplicativo precisa tentar se conectar de novo com espera exponencial.

Cenários de persistência

Esta seção explica problemas de persistência que podem ocorrer com sua instância.

Seu tráfego de gravação excede a capacidade do Memorystore para Valkey de compactar e recuperar espaço com a reescrita de AOF

Se isso acontecer, o arquivo somente de anexação (AOF, na sigla em inglês) vai crescer mais rápido do que o processo de reescrita consegue gerenciar. Isso leva ao esgotamento do disco, causa falhas de gravação e bloqueia operações que exigem a criação de réplicas e sincronização completa.

O Memorystore para Valkey implementou mecanismos de proteção para regular a capacidade de gravação. Isso garante que a reescrita do AOF possa acompanhar cargas de trabalho de gravação alta e sustentada.