Definir expiração do cache L1 em um processador de mensagens

O Apigee Edge oferece armazenamento em cache para persistência de dados entre solicitações. Quando os dados da API são recebidos, eles são armazenados em cache por um breve período e, em seguida, excluídos. O período máximo de tempo em que uma parte dos dados é mantida antes de ser excluída é chamada de validade, ou tempo de vida (TTL) do cache. Cada cache tem um TTL padrão, mas em alguns casos pode ser necessário alterar o valor do TTL para melhorar o desempenho da API.

Tipos de cache

Os dados da API são armazenados em dois tipos de cache:

  • Nível 1 (L1): cache na memória, que tem acesso mais rápido, mas menos armazenamento disponível de armazenamento.
  • Nível 2 (L2): cache persistente em um armazenamento de dados do Cassandra, que tem uma acesso, mas aumentar a capacidade de armazenamento disponível.

Quando uma entrada de dados no cache L1 atinge o TTL L1, ela é excluída. No entanto, um cópia da entrada é mantida no cache L2 (que tem um TTL mais longo que o cache L1), onde permanece acessível para outros processadores de mensagens. Consulte Na memória e níveis de cache permanente para mais detalhes sobre o cache.

TTL L1 máx.

No Edge para nuvem privada, é possível definir o TTL máximo do cache L1 para cada mensagem usando a propriedade Max L1 TTL (conf_cache_max.l1.ttl.in.seconds). Uma entrada no cache L1 expira após atingir o valor máximo de TTL L1 e é excluída.

Observações:

  • Por padrão, o TTL L1 máximo está desativado (com o valor -1), Nesse caso, o TTL de uma entrada no cache L1 é determinado pela política PreencherCache configurações de expiração (para os caches L1 e L2).
  • O TTL L1 máximo só tem efeito se o valor for menor que a expiração geral do cache.

Configurar o TTL máximo de L1

É possível definir o TTL máximo do L1 em um processador de mensagens da seguinte maneira:

  1. Abra o de configuração do Terraform /opt/apigee/customer/application/message-processor.properties em um editor. Crie o arquivo se ele não existir.
  2. Defina a propriedade "Max L1 TTL" como o valor desejado:
    conf_cache_max.l1.ttl.in.seconds = 180

    Recomendamos o valor de 180 segundos.

  3. Verifique se o arquivo de propriedades é de propriedade da "apigee" usuário:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Reinicie o processador de mensagens:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Diretrizes para configurar o TTL máximo do L1

Ao definir o TTL máximo do L1, lembre-se das seguintes diretrizes:

  • RPCs: se você notar que uma chamada de procedimento remoto (RPC) está faltando entre processadores de mensagens (MPs)— especialmente em vários data centers, é possível que o cache L1 tenha entradas desatualizadas, que permanecerão desatualizadas até que sejam excluídas. do cache L1. Definir o TTL máximo do L1 como um valor menor força entradas desatualizadas sejam removidas e substituídas por valores novos do cache L2 mais cedo.
    Solução:diminuir conf_cache_max.l1.ttl.in.seconds.
  • Carga excessiva no Casandra:quando você define um valor para o TTL máximo L1, as entradas de cache L1 vai expirar com mais frequência, levando a mais ausências de cache L1 e mais ocorrências em cache L2. Como o cache L2 é atingido com mais frequência, O Cassandra terá uma carga maior.
    Solução: aumentar conf_cache_max.l1.ttl.in.seconds

Como regra geral, ajuste o TTL máximo do L1 para um valor que equilibre a frequência de ausências de RPC entre os MPs com a carga potencial no Cassandra.

Recomendamos definir o valor de conf_cache_max.l1.ttl.in.seconds como pelo menos 180 segundos (3 minutos) para manter o processamento funcionando sem problemas.