A 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 depois excluídos. O tempo máximo que um dado é mantido antes de ser excluído é chamado de expiração ou time to live (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 em memória, que tem acesso mais rápido, mas menos capacidade de armazenamento disponível.
- Nível 2 (L2): cache persistente em um repositório de dados do Cassandra, que tem acesso mais lento, mas mais capacidade de armazenamento disponível.
Quando uma entrada de dados no cache L1 atinge o TTL L1, ela é excluída. No entanto, uma cópia da entrada é mantida no cache L2 (que tem um TTL mais longo do que o cache L1), onde permanece acessível para outros processadores de mensagens. Consulte Níveis de cache na memória e permanentes para mais detalhes sobre o cache.
TTL máximo de L1
No Edge para nuvem privada, é possível definir o TTL máximo do cache L1 para cada processador de mensagens usando a propriedade Max L1 TTL (conf_cache_max.l1.ttl.in.seconds). Uma entrada no cache L1 vai expirar depois de atingir o valor Max L1 TTL e será excluída.
Observações:
- Por padrão, o TTL máximo de L1 está desativado (com o valor
-1). Nesse caso, o TTL de uma entrada no cache L1 é determinado pelas configurações de expiração da política PopulateCache (para os caches L1 e L2). - O TTL máximo de L1 só tem efeito se o valor for menor que a validade geral do cache.
Como definir o TTL máximo de L1
É possível definir o TTL máximo de L1 em um processador de mensagens da seguinte maneira:
- Abra o
arquivo de configuração
/opt/apigee/customer/application/message-processor.propertiesem um editor. Se o arquivo não existir, crie-o. - Defina a propriedade "TTL máximo de L1" com o valor desejado:
conf_cache_max.l1.ttl.in.seconds = 180
Recomendamos o valor de
180segundos. - Verifique se o arquivo de propriedades pertence ao usuário "apigee":
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Reinicie o processador de mensagens:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Diretrizes para definir o TTL máximo de L1
Ao definir o TTL máximo de L1, siga estas diretrizes:
- Perdas de RPC:se você notar perdas de chamada de procedimento remoto (RPC) entre
processadores de mensagens (MPs),
especialmente em vários data centers,
é possível que o cache L1 tenha entradas desatualizadas, que vão permanecer assim até serem excluídas
do cache L1. Definir o TTL máximo de L1 como um valor menor força a remoção de todas as entradas desatualizadas e a substituição por valores novos do cache de L2 mais cedo.
Solução:diminuaconf_cache_max.l1.ttl.in.seconds. - Carga excessiva no Cassandra:quando você define um valor para o TTL máximo de L1, as entradas de cache L1
expiram com mais frequência,
o que leva a mais ausências no cache L1 e mais ocorrências em cache L2. Como o cache L2 será acessado com mais frequência,
o Cassandra vai ter uma carga maior.
Solução:aumenteconf_cache_max.l1.ttl.in.seconds.
Como regra geral, ajuste o TTL máximo de L1 para um valor que equilibre a frequência de falhas de RPC entre 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.