O Apigee Edge fornece 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 período máximo que uma parte dos dados é mantida antes de ser excluída é chamada de validade, ou tempo de vida (TTL, na sigla em inglês) do cache. Cada cache tem um TTL padrão, mas, em alguns casos, pode ser necessário alterar o valor dele 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 menor capacidade de armazenamento disponível.
- Nível 2 (L2): cache permanente em um armazenamento de dados do Cassandra, que tem acesso mais lento, mas maior 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 a outros processadores de mensagens. Consulte Níveis de cache na memória e persistente 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 de TTL máximo L1 (conf_cache_max.l1.ttl.in.seconds
).
Uma entrada no cache L1 expira depois de atingir o valor TTL máximo de L1 e é excluída.
Notes:
- Por padrão, o TTL máximo de L1 é 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 FillCache (para os caches L1 e L2). - O TTL máximo de L1 só terá efeito se o valor for menor que a expiração geral do cache.
Como configurar o TTL máximo L1
Para definir o TTL máximo de L1 em um processador de mensagens, faça o seguinte:
- Abra o
arquivo de configuração
/opt/apigee/customer/application/message-processor.properties
em um editor. Se o arquivo não existir, crie-o. - Defina a propriedade "Max L1 TTL" com o valor desejado:
conf_cache_max.l1.ttl.in.seconds = 180
Recomendamos o valor de
180
segundos. - 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 configurar o TTL máximo L1
Ao definir o TTL máximo de L1, lembre-se das seguintes diretrizes:
- Ausências de RPC: se você notar falhas na chamada de procedimento remoto (RPC) entre
os processadores de mensagens (MPs),
especialmente em vários data centers,
é possível que o cache L1 tenha entradas desatualizadas, que permanecerão desatualizadas até serem excluídas
do cache L1. Definir o TTL máximo de L1 para um valor mais baixo força todas
as entradas desatualizadas a serem removidas e substituídas por novos valores do cache L2 o quanto antes.
Solução:diminuaconf_cache_max.l1.ttl.in.seconds
. - Carga excessiva em Casandra:quando você define um valor para o TTL máximo de L1, as entradas de cache L1 expiram com mais frequência, levando a mais ausências no cache L1 e mais ocorrências em cache L2. Como o cache L2 será atingido com mais frequência,
o Cassandra incorrerá em uma carga maior.
Solução:aumentarconf_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 ausências 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 (três minutos) para manter o processamento funcionando sem problemas.