Resolver problemas

Esta página explica vários cenários de erro e oferece 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 monitorar atrasos de replicação?

O Memorystore para Valkey tem a /instance/replication/maximum_offset_diff métrica. 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 a diferença de deslocamento de replicação baixa, as réplicas podem executar 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 definir um limite para a métrica maximum_offset_diff. Se o limite for excedido, o Memorystore para Valkey poderá notificar você por um alerta.

Com base no tipo de nó da sua instância, recomendamos definir 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 menor que 64 MB.

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

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

Pode haver um atraso de replicação significativo se a instância principal tiver muitas operações de gravação e as réplicas não conseguirem acompanhar a replicação dessas operações. Para resolver esse problema, recomendamos escalonar a capacidade de instância aumentando o número de shards.

Cenários de uso da CPU

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

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

Se o buffer de saída da instância do Memorystore para 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 para 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 monitorar o maxmemory e a memória usada da instância. Isso ajuda a saber se a instância atinge a capacidade provisionada. Além disso, ao reduzir o valor do parâmetro maxmemory, você terá mais espaço para a sobrecarga.

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

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

Cenários de gerenciamento de memória

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

Qual métrica pode ser usada para determinar se a instância está sob pressão de memória?

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

Cenários de monitoramento

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

Como configurar alertas para o Memorystore para Valkey?

É possível usar o Cloud Monitoring para definir alertas que notificam você se alguma métrica exceder os limites definidos para a 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ões 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 rejeição de conexão.

Se isso acontecer, faça o seguinte:

  • Use a métrica /instance/node/stats/rejected_connections_count para determinar o número de conexões que o Memorystore for Valkey rejeita porque o nó da instância atinge o limite máximo de clientes.
  • Use a métrica /instance/node/clients/connected_clients para determinar o número de clientes conectados ao nó da instância. Dessa forma, é possível verificar se todos os nós da instância estão abaixo do limite.
  • Interrompa as conexões vazadas ou indesejadas usando o client kill comando.
  • Reduza a contagem de conexões ou o tamanho do pool no aplicativo cliente. Para mais informações, consulte a documentação associada ao aplicativo cliente.
  • Ajuste o limite máximo de clientes. Para mais informações, consulte Configurar uma instância.
  • Escalone a instância para um tipo de nó maior para que ela tenha um limite de conexão mais alto.

Cenários de tempo limite

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

O que fazer se você receber um tempo limite de E/S?

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

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

  • Use the instance/cpu/maximum_utilization métrica para determinar a utilização da CPU de um nó na instância, de 0,0 (0%) a 1,0 (100%). Recomendamos que todos os nós tenham uma porcentagem de utilização da CPU menor que 80%. Para mais informações, consulte Práticas recomendadas de uso da CPU.
  • Quando o cliente se desconecta do servidor porque o servidor atinge o tempo limite, tente novamente com espera exponencial e com Jitter. 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

As regras de firewall podem causar erros de conexão bloqueando as portas usadas pelo Memorystore para Valkey. É necessário permitir todas as portas para os dois endpoints do Private Service Connect da instância. Para mais informações sobre os endpoints, consulte Endereços de rede reservados.

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

Você pode ter uma política da organização que bloqueia as conexões do Private Service Connect com a instância do Memorystore para Valkey.

Se a política da organização usar a política .restrictPrivateServiceConnectProducer, permita 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, permita SERVICE_PRODUCERS. 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 ao Memorystore para 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:

  • Configurar 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 conexões sem resposta de maneira proativa, mesmo quando as conexões estiverem 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 inativas sem resposta em um minuto.
  • Configurar tempos limite de usuário TCP: defina esse tempo limite nos clientes para redefinir conexões que têm solicitações pendentes e param de responder. Por exemplo, se você definir o tempo limite como 15 segundos, os clientes vão redefinir as conexões sem resposta que têm solicitações pendentes após 15 segundos.

Como processar erros para instâncias com o modo de cluster desativado

  • Se o aplicativo se conectar ao endpoint de leitura de uma instância que não tem réplicas de leitura, a conexão será fechada e a mensagem de erro ERR no replicas found será exibida. 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 será exibida. Essa mensagem de erro também será exibida 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 novamente a conexão com espera exponencial.

Cenários de persistência

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

O tráfego de gravação excede a capacidade do Memorystore para Valkey de compactar e recuperar espaço por meio da reescrita de AOF

Se essa situação ocorrer, o arquivo somente de anexação (AOF, na sigla em inglês) vai crescer mais rápido do que o processo de reescrita pode 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 a sincronização completa.

O Memorystore para Valkey implementou proteções para regular a taxa de transferência de gravação. Isso garante que a reescrita de AOF possa acompanhar cargas de trabalho de gravação alta e sustentada.