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 en cache pendant une courte période, puis supprimées. La durée maximale de conservation d'une donnée avant d'être supprimée est appelée expiration ou durée de vie (TTL) du cache. Chaque cache a une valeur TTL par défaut, mais dans certains cas, vous devrez peut-être la modifier pour améliorer les performances de l'API.

Types de cache

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 dont la capacité de stockage est réduite.
  • Niveau 2 (L2): cache persistant dans un magasin de données Cassandra, dont l'accès est plus lent, mais dont la capacité de stockage disponible est plus élevée.

Lorsqu'une entrée de données dans le cache L1 atteint la valeur TTL L1, elle est supprimée. Cependant, une copie de l'entrée est conservée dans le cache L2 (dont la valeur TTL est supérieure à celle du cache L1), où elle reste accessible aux autres processeurs de messages. Pour en savoir plus sur le cache, consultez la section Niveaux de cache en mémoire et persistants.

Valeur TTL maximale de L1

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é TTL maximale de L1 (conf_cache_max.l1.ttl.in.seconds). Une entrée dans le cache L1 expirera après avoir atteint la valeur TTL maximale de L1 et sera 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 de L1 n'a d'effet que si sa valeur est inférieure à l'expiration globale du cache.

Définir la valeur TTL maximale de L1

Vous pouvez définir la valeur TTL maximale de L1 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 maximale L1 sur la valeur souhaitée :
    conf_cache_max.l1.ttl.in.seconds = 180

    Nous recommandons la valeur 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 maximale de L1

Lorsque vous définissez la valeur TTL maximale de L1, gardez à l'esprit les consignes suivantes:

  • Erreurs RPC:si vous remarquez des défauts d'appel de procédure à distance (RPC) entre les processeurs de messages (en particulier sur plusieurs centres de données), il est possible que le cache L1 comporte des entrées obsolètes, qui restent obsolètes jusqu'à leur suppression du cache L1. Définir la valeur TTL maximale de L1 sur une valeur inférieure force la suppression et le remplacement des entrées obsolètes par de nouvelles valeurs du cache L2, plus tôt.
    Solution:réduisez la valeur conf_cache_max.l1.ttl.in.seconds.
  • Charge excessive sur Casandra:lorsque vous définissez une valeur TTL maximale de L1, les entrées de cache L1 expirent plus souvent, ce qui augmente le nombre de défauts de cache L1 et d'appels de cache L2. Comme le cache L2 est touché plus souvent, Cassandra subit une charge accrue.
    Solution:Augmentez conf_cache_max.l1.ttl.in.seconds

En règle générale, réglez la valeur TTL maximale de L1 sur une valeur qui équilibre la fréquence des défauts de RPC entre les MP 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 assurer le bon déroulement du traitement.