Esta página explica vários cenários de erro e fornece orientações para resolver os erros.
Cenários de replicação
Esta secção explica os problemas de replicação que podem ocorrer com a sua instância.
Como monitoriza os atrasos na replicação?
O Memorystore for Valkey tem a métrica /instance/replication/maximum_offset_diff
. Esta métrica monitoriza a diferença máxima de desvio de replicação (em bytes) para um nó numa instância principal.
Ao manter a diferença de compensação da replicação baixa, as réplicas podem realizar operações de sincronização incremental com maior frequência e a um custo inferior ao das operações de sincronização completa.
Recomendamos que defina um limite para a métrica maximum_offset_diff
. Se
o limite for excedido, o Memorystore for Valkey pode enviar-lhe uma notificação através de um
alerta.
Com base no tipo de nó da sua instância, recomendamos que defina o limite da seguinte forma:
- Se o tipo de nó for
shared-core-nano
,standard-small
ouhighmem-medium
, defina o limite para ser inferior a 64 MB. - Se o tipo de nó for
highmem-xlarge
, defina o limite para ser inferior a 1 GB.
O que faz se houver um atraso na replicação entre a instância principal e as respetivas réplicas?
Pode haver um atraso de replicação significativo se a instância principal tiver demasiadas operações de escrita e as réplicas não conseguirem acompanhar a replicação destas operações. Para resolver este problema, recomendamos que ajuste a escala da capacidade da instância aumentando o número de fragmentos da instância.
Cenários de gestão de memória
Esta secção explica os problemas de gestão de memória que a sua instância pode encontrar.
Que métrica pode usar para determinar que a sua instância está sob stress de memória?
Para monitorizar a utilização de memória de uma instância do Memorystore for Valkey, recomendamos que veja a métrica /instance/memory/maximum_utilization
. Se a utilização de memória da instância se aproximar dos 80% e esperar que a utilização de dados aumente, aumente a escala do tamanho da instância para melhorar o desempenho e criar espaço para novos dados.
Cenários de monitorização
Esta secção explica os problemas de monitorização que a sua instância pode encontrar.
Como configura alertas para o Memorystore for Valkey?
Pode usar o Cloud Monitoring para definir alertas que lhe enviam uma notificação se alguma métrica exceder os limites que definiu para a sua instância. Para mais informações sobre como definir alertas no Cloud Monitoring, consulte o artigo Defina um alerta de monitorização para a utilização de memória.
Cenários de gestão de ligações
Esta secção explica os problemas de gestão de ligações que a sua instância pode encontrar.
Se atingir o limite de ligações ou receber um limite de tempo de ligação, o que deve fazer?
Quando atinge o limite de ligações, o cliente não consegue estabelecer ligação ao servidor. Isto é conhecido como uma rejeição de ligação.
Se tal acontecer, faça o seguinte:
- Use a métrica
/instance/node/stats/rejected_connections_count
para determinar o número de ligaçõ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 ligados ao nó da instância. Desta forma, pode ver se todos os nós na instância estão abaixo do limite. - Pare quaisquer ligações indesejadas ou com fugas através do comando
client kill
. - Reduza a contagem de ligações ou o tamanho do conjunto na aplicação cliente. Para mais informações, consulte a documentação associada à aplicação cliente.
- Ajuste o limite máximo de clientes. Para mais informações, consulte o artigo Configure uma instância.
- Aumente a escala da sua instância para um tipo de nó maior para que a instância tenha um limite de ligação superior.
Cenários de limite de tempo
Esta secção explica os problemas de limite de tempo que a sua instância pode encontrar.
Se receber um limite de tempo de E/S, o que faz?
Quando uma operação de leitura ou escrita no Memorystore for Valkey não é concluída dentro de um período especificado, ocorre um limite de tempo de E/S. Este limite de tempo pode ocorrer por vários motivos. Por exemplo, um ou mais nós da sua instância podem estar sobrecarregados.
Se receber um limite de tempo de E/S, faça o seguinte:
- Use a métrica
instance/cpu/maximum_utilization
para determinar a utilização 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 percentagem de utilização da CPU inferior a 80%. Para mais informações, consulte as práticas recomendadas de utilização da CPU. - Quando o cliente se desliga do servidor porque o tempo limite do servidor é excedido, tente novamente com exponential backoff e com Jitter. Isto ajuda a evitar que vários clientes sobrecarreguem o servidor em simultâneo.
Cenários de erro de conetividade
Esta secção explica os problemas de conetividade que a sua instância pode encontrar.
Erro de ligação causado por regras de firewall
As regras de firewall podem causar erros de ligação ao bloquear as portas usadas pelo Memorystore for Valkey. Deve permitir todas as portas para ambos os pontos finais do Private Service Connect da sua instância. Para mais informações sobre os pontos finais, consulte o artigo Endereços de rede reservados.
Erro de ligação causado pelas políticas da organização.
Pode ter uma política da organização que bloqueia as suas ligações do Private Service Connect à sua instância do Memorystore for Valkey.
Se a política da sua organização usar a política .restrictPrivateServiceConnectProducer
, adicione o número da pasta 961333125034
à lista de autorizações. Esta é uma pasta especificamente para o Memorystore for Valkey. Por exemplo:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer spec: rules: - values: allowedValues: - under:folders/961333125034
Se a política da sua organização usar a política .disablePrivateServiceConnectCreationForConsumers
,
deve permitir a lista SERVICE_PRODUCERS
. Por exemplo:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers spec: rules: - values: allowedValues: - SERVICE_PRODUCERS
Processamento de erros para instâncias com o modo de cluster desativado
Se a aplicação se ligar ao ponto final de leitura de uma instância que não tenha réplicas de leitura, a ligação é fechada e é apresentada a mensagem de erro
ERR no replicas found
. Neste caso, experimente ligar a aplicação ao ponto final principal ou adicionar réplicas de leitura à instância.Em caso de comutação por falha, as ligações existentes da sua aplicação são fechadas e é apresentada a mensagem de erro
ERR role change occurred
. Também vê esta mensagem de erro se a sua aplicação se ligar ao ponto final de leitura de uma instância e todas as réplicas de leitura da instância estiverem a falhar. Neste caso, a aplicação deve tentar novamente a ligação com retirada exponencial.