Tous les produits
Search
Centre de documentation

ApsaraMQ for Kafka:Pourquoi un message expiré est-il conservé ?

Dernière mise à jour :Aug 12, 2026

Un message reste interrogeable sur le broker ApsaraMQ for Kafka même après l'expiration de sa période de rétention. Ce comportement s'explique par le fait qu'ApsaraMQ for Kafka supprime les messages au niveau du segment, et non individuellement.

Fonctionnement de la suppression par segment

Afin d'éviter la fragmentation du stockage, ApsaraMQ for Kafka organise les messages en segments. Chaque segment contient par défaut jusqu'à 1 Go de données. Lors d'un cycle de suppression, le système élimine des segments entiers plutôt que des messages isolés.

Le cycle de vie d'un segment se déroule comme suit :

  1. Ouvert : le segment accepte les nouveaux messages et reste dans cet état tant qu'il n'a pas atteint la limite de taille de 1 Go.

  2. Fermé : ayant atteint 1 Go, le segment n'accepte plus aucun message.

  3. Éligible à la suppression : un segment fermé dont les messages ont dépassé la Message Retention Period configurée devient éligible à la suppression.

ApsaraMQ for Kafka ne pouvant supprimer que des segments fermés, tout message expiré situé dans un segment ouvert est conservé jusqu'à la fermeture, puis à la suppression ultérieure de ce segment.

Causes

La conservation d'un message expiré résulte de l'une des conditions suivantes :

  • Le segment n'a pas atteint 1 Go. Le segment contenant le message expiré est toujours ouvert et accepte de nouveaux messages. Pour les topics à faible débit, les segments mettent plus de temps à atteindre la limite de 1 Go, ce qui retarde leur suppression.

  • L'utilisation du disque est inférieure à 75 %. Tant que l'occupation disque reste sous ce seuil, ApsaraMQ for Kafka applique une planification fixe pour la suppression des messages expirés : une fois par jour à 04:00. Les messages expirés persistent donc jusqu'à l'exécution suivante.

Seuils de suppression basés sur le disque

Deux seuils d'utilisation disque régissent la gestion de la rétention des messages dans ApsaraMQ for Kafka :

Utilisation du disque Comportement
Inférieure à 75 % Les messages expirés sont supprimés une fois par jour à 04:00.
85 % ou plus La suppression des messages est immédiate, en commençant par les plus anciens, indépendamment du paramètre Message Retention Period.
Remarque

Lorsque l'utilisation du disque atteint 85 %, le système privilégie la disponibilité du service par rapport aux paramètres de rétention. Les messages sont alors supprimés à partir des plus anciens stockés, même si leur Message Retention Period configurée n'est pas encore écoulée.

Message Retention Period

Le paramètre Message Retention Period définit la durée maximale de conservation des messages lorsque la capacité disque est suffisante.

Propriété Valeur
Plage valide De 24 à 480 heures
Valeur par défaut 72 heures

Ce paramètre constitue une limite supérieure et non une garantie absolue. La rétention effective dépend de l'état des segments et de l'utilisation du disque, comme décrit dans les sections précédentes.

Dépannage

Si des messages expirés persistent plus longtemps que prévu, procédez aux vérifications suivantes :

  1. Vérifiez l'utilisation des segments. Les topics à faible débit génèrent des segments qui atteignent lentement la limite de 1 Go, retardant ainsi la suppression. Pour identifier cette cause, examinez le volume de données du topic. Si celui-ci reçoit peu de messages, le segment actif peut rester ouvert pendant une période prolongée. Augmentez le volume de messages ou attendez que le segment se remplisse et se ferme naturellement pour résoudre ce problème.

  2. Contrôlez l'utilisation du disque. Lorsque l'occupation disque est inférieure à 75 %, la suppression des messages expirés intervient uniquement lors de l'exécution planifiée suivante (quotidiennement à 04:00). Surveillez l'utilisation du disque via la console ApsaraMQ for Kafka pour confirmer cette situation.

  3. Examinez le paramètre de rétention. Assurez-vous que la Message Retention Period correspond bien à la valeur souhaitée pour le topic dans la console ApsaraMQ for Kafka. La plage valide s'étend de 24 à 480 heures, avec une valeur par défaut de 72 heures.