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

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:

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

    Recomendamos o valor de 180 segundos.

  3. Verifique se o arquivo de propriedades pertence ao usuário "apigee":
    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 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:diminua conf_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:aumentar conf_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.