Définir la date d'expiration du cache L1 sur un processeur de messages

Apigee Edge fournit une mise en cache pour la persistance des données entre les requêtes. Lorsque les données de l'API sont reçues, elles sont stockées dans le cache pendant une courte période, puis supprimées. La durée maximale pendant laquelle une donnée est conservée avant d'être supprimée est appelée expiration ou durée de vie (TTL) du cache. Chaque cache possède une valeur TTL par défaut, mais dans certains cas, vous devrez peut-être modifier la valeur TTL pour améliorer les performances de l'API.

Types de caches

Les données de l'API sont stockées dans deux types de cache :

  • Niveau 1 (L1) : cache en mémoire, qui offre un accès plus rapide, mais une capacité de stockage disponible inférieure.
  • Niveau 2 (L2) : cache persistant dans un datastore Cassandra, dont l'accès est plus lent, mais qui dispose d'une plus grande capacité de stockage.

Lorsqu'une entrée de données dans le cache L1 atteint la valeur TTL L1, elle est supprimée. Toutefois, une copie de l'entrée est conservée dans le cache L2 (qui a une valeur TTL plus longue que le cache L1), où elle reste accessible aux autres processeurs de messages. Pour en savoir plus sur le cache, consultez Niveaux de cache en mémoire et de cache persistant.

Valeur TTL L1 maximale

Dans Edge for Private Cloud, vous pouvez définir la valeur TTL maximale du cache L1 pour chaque processeur de messages à l'aide de la propriété "Max L1 TTL" (conf_cache_max.l1.ttl.in.seconds). Une entrée du cache L1 expire après avoir atteint la valeur TTL maximale du cache L1 et est supprimée.

Remarques :

  • Par défaut, la valeur TTL maximale de L1 est désactivée (avec la valeur -1). Dans ce cas, la valeur TTL d'une entrée dans le cache L1 est déterminée par les paramètres d'expiration de la règle PopulateCache (pour les caches L1 et L2).
  • La valeur TTL maximale du niveau L1 n'a d'effet que si elle est inférieure à l'expiration globale du cache.

Définir la valeur TTL L1 maximale

Vous pouvez définir la valeur TTL L1 maximale sur un processeur de messages comme suit :

  1. Ouvrez le fichier de configuration /opt/apigee/customer/application/message-processor.properties dans un éditeur. Si le fichier n'existe pas, créez-le.
  2. Définissez la propriété "TTL L1 max." sur la valeur souhaitée :
    conf_cache_max.l1.ttl.in.seconds = 180

    Nous vous recommandons de définir la valeur sur 180 secondes.

  3. Assurez-vous que le fichier de propriétés appartient à l'utilisateur "apigee" :
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Redémarrez le processeur de messages :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Consignes pour définir la valeur TTL L1 maximale

Lorsque vous définissez la valeur TTL L1 maximale, tenez compte des consignes suivantes :

  • Échecs RPC : si vous constatez des échecs d'appel de procédure à distance (RPC) entre les processeurs de messages (MP), en particulier dans plusieurs centres de données, il est possible que le cache L1 contienne des entrées obsolètes, qui le resteront jusqu'à ce qu'elles soient supprimées du cache L1. Définir une valeur TTL L1 maximale plus faible force la suppression des entrées obsolètes et leur remplacement par des valeurs récentes du cache L2 plus rapidement.
    Solution : diminuez conf_cache_max.l1.ttl.in.seconds.
  • Charge excessive sur Cassandra : lorsque vous définissez une valeur pour la valeur TTL L1 maximale, les entrées du cache L1 expirent plus souvent, ce qui entraîne davantage d'échecs de cache L1 et de succès de cache L2. Comme le cache L2 sera plus souvent sollicité, Cassandra subira une charge accrue.
    Solution : augmentez conf_cache_max.l1.ttl.in.seconds.

En règle générale, définissez la valeur "Max L1 TTL" de manière à équilibrer la fréquence des échecs RPC entre les processeurs de messages et la charge potentielle sur Cassandra.

Nous vous recommandons de définir la valeur de conf_cache_max.l1.ttl.in.seconds sur au moins 180 secondes (3 minutes) pour que le traitement se déroule correctement.