Configura el vencimiento de la caché L1 en un procesador de mensajes

Apigee Edge proporciona almacenamiento en caché para la persistencia de datos en todas las solicitudes. Cuando se reciben los datos de la API, se almacenan en la caché durante un breve período y, luego, se borran. La cantidad máxima de tiempo que se conserva un dato antes de que se borre se denomina vencimiento o tiempo de actividad (TTL) de la caché. Cada caché tiene un TTL predeterminado, pero, en algunos casos, es posible que debas cambiar el valor del TTL para mejorar el rendimiento de la API.

Tipos de caché

Los datos de la API se almacenan en dos tipos de caché:

  • Nivel 1 (L1): Es la caché en memoria, que tiene un acceso más rápido, pero menos capacidad de almacenamiento disponible.
  • Nivel 2 (L2): Es la caché persistente en un almacén de datos de Cassandra, que tiene un acceso más lento, pero más capacidad de almacenamiento disponible.

Cuando una entrada de datos en la caché L1 alcanza el TTL de L1, se borra. Sin embargo, se conserva una copia de la entrada en la caché L2 (que tiene un TTL más largo que la caché L1), donde sigue siendo accesible para otros Message Processors. Consulta Niveles de caché persistente y en memoria para obtener más detalles sobre la caché.

TTL máximo de L1

En Edge para nube privada, puedes establecer el TTL máximo de la caché L1 para cada Message Processor con la propiedad Max L1 TTL (conf_cache_max.l1.ttl.in.seconds). Una entrada en la caché L1 vencerá después de alcanzar el valor de Max L1 TTL y se borrará.

Notas:

  • De forma predeterminada, el TTL máximo de L1 está inhabilitado (con el valor -1), en cuyo caso el TTL de una entrada en la caché L1 se determina por la configuración de vencimiento de la política PopulateCache (para la caché L1 y L2).
  • El TTL máximo de L1 solo tiene efecto si su valor es menor que el vencimiento general de la caché.

Configura el TTL máximo de L1

Puedes establecer el TTL máximo de L1 en un Message Processor de la siguiente manera:

  1. Abre el archivo de configuración /opt/apigee/customer/application/message-processor.properties en un editor. Si el archivo no existe, créalo.
  2. Establece la propiedad TTL máximo de L1 en el valor deseado:
    conf_cache_max.l1.ttl.in.seconds = 180

    Recomendamos el valor 180 segundos.

  3. Asegúrate de que el archivo de propiedades sea propiedad del usuario "apigee":
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Reinicia el Message Processor:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Lineamientos para establecer el TTL máximo de L1

Cuando configures el TTL máximo de L1, ten en cuenta los siguientes lineamientos:

  • Errores de RPC: Si notas errores de llamada de procedimiento remoto (RPC) entre los Message Processors (MP), en especial en varios centros de datos, es posible que la caché L1 tenga entradas inactivas, que permanecerán inactivas hasta que se borren de la caché L1. Si configuras el TTL máximo de L1 en un valor más bajo, se fuerza la eliminación de las entradas obsoletas y se reemplazan por valores nuevos de la caché de L2 antes.
    Solución: Disminuye conf_cache_max.l1.ttl.in.seconds.
  • Carga excesiva en Cassandra: Cuando estableces un valor para el TTL máximo de L1, las entradas de caché L1 vencerán con más frecuencia, lo que generará más errores de caché L1 y más aciertos de caché L2. Como la caché L2 se alcanzará con más frecuencia, Cassandra tendrá una mayor carga.
    Solución: Aumenta conf_cache_max.l1.ttl.in.seconds

Como regla general, ajusta el TTL máximo de L1 a un valor que equilibre la frecuencia de las fallas de RPC entre los MP con la carga potencial en Cassandra.

Te recomendamos establecer el valor de conf_cache_max.l1.ttl.in.seconds en, al menos, 180 segundos (3 minutos) para que el procesamiento se ejecute sin problemas.