Bir mesajın saklama süresi dolduktan sonra bile ApsaraMQ for Kafka broker'ında sorgulanabilir. Bunun nedeni, ApsaraMQ for Kafka'nın mesajları tek tek değil, segment düzeyinde silmesidir.
Segment tabanlı silme nasıl çalışır
ApsaraMQ for Kafka, depolama alanı parçalanmasını önlemek için mesajları segmentlerde saklar. Her segment varsayılan olarak en fazla 1 GB veri tutar. Sistem silme döngüsünü çalıştırdığında tek tek mesajlar yerine tüm segmentleri siler.
Bir segment aşağıdaki yaşam döngüsünden geçer:
Açık: Segment yeni mesajları kabul eder. 1 GB boyut sınırına ulaşana kadar açık kalır.
Kapalı: Segment 1 GB sınırına ulaşmıştır ve artık mesaj kabul etmez.
Silinmeye uygun: Mesajlarının süresi yapılandırılmış Message Retention Period değerini aşmış kapalı bir segment, silinmeye uygun hale gelir.
ApsaraMQ for Kafka yalnızca kapalı segmentleri silebildiğinden açık bir segment içindeki süresi dolmuş mesajlar, segment kapanana ve ardından silinene kadar tutulur.
Nedenler
Aşağıdaki koşullardan biri geçerli olduğunda süresi dolmuş bir mesaj tutulur:
Segment 1 GB'a ulaşmamıştır. Süresi dolmuş mesajı içeren segment hala açıktır ve yeni mesajları kabul etmektedir. Düşük aktarım hızına sahip konularda segmentlerin 1 GB sınırına ulaşması daha uzun sürer; bu durum silmeyi geciktirir.
Disk kullanımı %75'in altındadır. Disk kullanımı %75'in altında kaldığında ApsaraMQ for Kafka süresi dolmuş mesajları günde bir kez, saat 04:00'te sabit bir programa göre siler. Süresi dolmuş mesajlar bir sonraki planlı silme işlemi çalışana kadar var olmaya devam eder.
Disk tabanlı silme eşikleri
ApsaraMQ for Kafka mesaj saklamayı yönetmek için iki disk kullanımı eşiği kullanır:
| Disk kullanımı | Davranış |
|---|---|
| %75'in altında | Süresi dolmuş mesajlar günde bir kez, saat 04:00'te silinir. |
| %85 veya üzeri | Message Retention Period ayarından bağımsız olarak en eskiden başlayarak mesajlar hemen silinir. |
Disk kullanımı %85'e ulaştığında sistem saklama ayarlarından önce hizmet kullanılabilirliğini önceliklendirir. Yapılandırılmış Message Retention Period süresine ulaşmamış olsalar bile mesajlar en erken kaydedilenlerden başlayarak silinir.
Message Retention Period
Message Retention Period parametresi disk kapasitesinin yeterli olduğu durumlarda mesajların saklanacağı maksimum süreyi belirtir.
| Özellik | Değer |
|---|---|
| Geçerli aralık | 24 ila 480 saat |
| Varsayılan | 72 saat |
Bu ayar bir garanti değil, üst sınırdır. Gerçek saklama süresi önceki bölümlerde açıklandığı gibi segment durumuna ve disk kullanımına bağlıdır.
Sorun giderme
Süresi dolmuş mesajlar beklenenden daha uzun süre tutuluyorsa şunları kontrol edin:
Segment kullanımını doğrulayın. Düşük aktarım hızına sahip konularda segmentlerin 1 GB sınırına ulaşması daha uzun sürer ve bu durum silmeyi erteler. Bunun neden olup olmadığını belirlemek için konunun veri hacmini kontrol edin. Konu düşük hacimli mesaj alıyorsa aktif segment uzun süre açık kalabilir. Mesaj hacmini artırmak veya segmentin doğal olarak dolup kapanmasını beklemek bu sorunu çözer.
Disk kullanımını kontrol edin. Disk kullanımı %75'in altındaysa süresi dolmuş mesajlar yalnızca bir sonraki planlı çalışmada (günlük 04:00) silinir. Onaylamak için ApsaraMQ for Kafka konsolu üzerinden disk kullanımını izleyin.
Saklama süresi ayarını gözden geçirin. ApsaraMQ for Kafka konsolunda konu için Message Retention Period değerinin istenen değere yapılandırıldığını onaylayın. Geçerli aralık 24 ila 480 saattir ve varsayılan değer 72 saattir.