Esta página explica as práticas recomendadas a seguir quando usar o Memorystore para Memcached.
Estruture a sua aplicação para processar falhas de cache
Deve seguir as práticas recomendadas de design de cache padrão ao conceber a cache para processar falhas de cache e indisponibilidade do serviço. Consulte o contrato de nível de serviço para ver informações sobre o compromisso do Memorystore for Memcached com o tempo de atividade.
Conceba a sua aplicação de modo que as falhas de cache e as indisponibilidades temporárias do serviço não impeçam a sua aplicação de obter dados da base de dados subjacente suportada pela sua instância do Memcached.
Além disso, se tiver problemas de indisponibilidade do espaço de chaves, aguarde e tente novamente com a retirada exponencial. Certifique-se de que define um limite de tempo após o qual a estratégia de repetição cessa.
Ligação a nós do Memcached
Quando consultar nós do Memcached com comandos como set
, get
e delete
, deve estabelecer ligação diretamente aos endereços IP dos nós. É possível executar estes comandos no ponto final de deteção automática. No entanto, esta ação não é recomendada porque reduz o desempenho da sua aplicação.
Descoberta automática recomendada
Recomendamos que use o serviço de deteção automática do Memorystore for Memcached. Este serviço automatiza a gestão de endereços IP de clusters quando adiciona ou remove nós do cluster. Para obter instruções sobre como configurar a deteção automática para o seu cluster, consulte o artigo Usar o serviço de deteção automática.
Configurar corretamente o parâmetro max-item-size
Esta secção explica como configurar melhor o parâmetro max-item-size
. Para ver os passos de ajuste deste parâmetro de configuração, consulte o artigo Configurar instâncias do Memcached.
Para ver a lista completa de parâmetros de configuração do Memcached disponíveis, consulte Configurações do Memcached.
Valores suportados e valores predefinidos
Para o Memcached de código aberto, o valor mínimo de max-item-size
é 1KiB
, o valor máximo é 1 GiB
e o valor predefinido é 1 MiB
. Para o Memorystore for Memcached, o valor mínimo é 512 KiB
, o valor máximo é 128
MiB
e o valor predefinido é 1 MiB
. Além disso, qualquer valor para o qual defina esta configuração tem de ser divisível por 512 KiB
.
Colocar em cache uma entrada superior ao max-item-size
configurado
Quando tenta colocar em cache uma entrada superior ao max-item-size
configurado, o Memcached falha a operação e devolve o valor falso. Se possível, crie lógica na sua aplicação para apresentar este erro do cliente OSS do Memcached, para que o possa depurar. A tentativa de colocar em cache uma entrada superior ao valor max-item-size
configurado pode causar uma latência elevada para a sua instância.
Definir max-item-size
para o valor máximo
Pode resolver alguns problemas com o parâmetro max-item-size
definindo-o para o valor máximo. No entanto, esta não é uma boa prática, pelo que não deve usar esta estratégia em produção. A gestão de memória do Memcached baseia-se em blocos e o armazenamento de itens maiores do que o bloco leva a uma alocação de memória ineficiente.
Evitar problemas de configuração de max-item-size
Primeiro, determine o tamanho máximo do item necessário para a sua cache. Defina max-item-size
como ligeiramente superior ao tamanho do maior item, como margem de segurança.
Tenha em atenção que o tamanho dos valores escritos na cache pode mudar na sua aplicação ao longo do tempo. Além disso, o cluster pode estar configurado incorretamente (por exemplo, quando migra de um ambiente para outro). Uma medida adicional que pode tomar é validar o tamanho máximo do item na sua aplicação, para que o pedido seja rejeitado se a sua aplicação tentar colocar em cache itens maiores do que a definição configurada.
Como equilibrar um cluster do Memcached desequilibrado
Como ocorrem clusters desequilibrados e riscos associados
Em algumas circunstâncias raras, quando cria uma instância do Memcached, os nós podem ser distribuídos de forma desigual pelas zonas numa região. Isto ocorre quando uma zona está indisponível no mesmo momento em que aprovisiona o cluster.
Um cluster desequilibrado aumenta o potencial de perda de dados porque os nós não estão tão uniformemente distribuídos como poderiam estar. O cluster não volta a equilibrar-se automaticamente quando a zona que estava inativa volta a ficar online.
Como reequilibrar o cluster
Pode reequilibrar o cluster aumentando temporariamente o número de nós no cluster e, em seguida, reduzindo o número de nós para o número original de nós. Esta ação de aumentar e diminuir a escala permite que o sistema do Memorystore for Memcached redistribua os nós uniformemente pelas zonas disponíveis.
O êxito deste método para reequilibrar o cluster depende da disponibilidade das zonas em questão.Atualmente, o Google Cloud não indica as zonas disponíveis/indisponíveis, pelo que só pode saber se a zona está online se os nós estiverem corretamente equilibrados durante a operação de escalamento.
Práticas recomendadas do Cloud Monitoring
Para acompanhar o desempenho da cache ao longo do tempo, deve usar o Cloud Monitoring para monitorizar algumas métricas essenciais do Memorystore for Memcached:
- Utilização de memória (
memcache.googleapis.com/node/cache_memory
) - Percentagem de utilização da CPU (
memcache.googleapis.com/node/cpu/utilization
)
A monitorização destas duas métricas ao longo do tempo ajuda a determinar a eficiência com que o cluster está a ser usado e se deve considerar aumentar ou diminuir o tamanho do cluster.
Por exemplo, se as métricas indicarem que a utilização de memória e a utilização da CPU aumentaram ao longo do tempo para mais de 80%, é possível que a tendência continue. Como resultado, pode aumentar o tamanho da instância antecipadamente para que a cache tenha espaço para armazenar novos valores à medida que os requisitos de recursos da sua aplicação aumentam.
Recomendamos que defina um alerta para quando a utilização de memória e a utilização da CPU atingirem 80%.
Em alternativa, a monitorização destas métricas ao longo do tempo pode indicar que não está a usar todos os recursos de espaço e CPU que tem atualmente. Neste caso, seria mais rentável diminuir o tamanho do cluster.
O que se segue?
- Saiba mais sobre o serviço de deteção automática.
- Reveja os parâmetros de configuração do Memcached modificáveis.