« Tüm yayınlar

Kafka 3.7 vs 4.3: linger.ms Değişikliği Performansı Nasıl Etkiliyor

Apache Kafka 3.7.2 ile 4.3.0 arasındaki performans farkının büyük kısmının linger.ms varsayılanının 0'dan 5 ms'ye çıkmasından kaynaklandığını gösteren benchmark analizi.

Bir performans mühendisi, Apache Kafka 3.7.2 ve 4.3.0 sürümlerini Dimster ile karşılaştırırken düşük yükte 4.3'ün daha yüksek uçtan uca gecikme gösterdiğini, yüksek yükte ise çok daha düzgün bir p99.9 gecikme profiline sahip olduğunu tespit ediyor. Kök neden, Kafka 4.0 ile birlikte producer tarafındaki varsayılan linger.ms değerinin 0'dan 5 ms'ye çıkarılmasıdır. Bu değişiklik, batch başına düşen kayıt sayısını artırarak broker ve consumer tarafında verimlilik sağlıyor, ancak düşük yükte sadece gereksiz bekleme ekleyip gecikmeyi artırıyor.

Yazar, producer başına partition başına gönderim hızının (aggregate throughput değil) batching davranışını belirleyen asıl metrik olduğunu matematiksel olarak gösteriyor. 5K kayıt/s senaryosunda producer başına ~24 ms'lik kayıt aralığı, 5 ms'lik linger'ın etkisiz kalmasına neden olurken; 100K kayıt/s'lik yoğun yükte ~1.2 ms'lik aralık, aynı linger değerinin batch boyutunu belirgin şekilde artırmasını sağlıyor ve p99.9 gecikmesini 700 ms'den 8 ms'ye düşürüyor.

Anahtar kelimeli (keyed) ikinci bir deney seti, linger.ms=20 gibi daha yüksek değerlerin yoğun ve anahtarlı yüklerde ciddi kazanım sağladığını, ancak 3.7.2 ile 4.3.0 arasında bu değerde performansın neredeyse özdeş kaldığını ortaya koyuyor — yani asıl fark motor iyileştirmesinden değil, tek bir client-side varsayılan değişiklikten kaynaklanıyor. Mühendisler için pratik sonuç: toplam cluster throughput'una değil, producer-partition başına gönderim hızına ve gerçek batch boyutlarına odaklanmak gerekiyor.