Her bir servis başına Couchbase Server’da memory kotası belirlemesi gerçekleştirilir. Belirli bir yer gerektirmeyen Query servisi bunun dışındadır. Bu durum bellek kaynaklarının düğüm bazında ayarlanmasına olanak tanımaktadır.
Data servisinin en az bir node üzerinde çalışması gerektiğini unutmayın ve bu düğümlerin her birinde Data servisine ayrılan kotadan çıkarıldığını unutmayınız!
Belirli bir bellek kotası ayrımının o servisin kümedeki her örneği için geçerlidir. Örneğin Analytics servisi için bir node’da 2048 mb yer ayrılsın ve cluster içinde 3 node üzerinde çalışıyorsa, o 3 node için de 2048 mb Analytics servisi için ayrılır. Bir cluster içinde aynı servisin birden çok örneği arasında farklı bellek ayırmasının olamayacağını unutmayın. Varsayılan olarak Couchbase Server belleğinin %80 inin sunucuya ve servislerine hizmet edilmesine olanak tanır. Sonuç olarak bir node’un toplam belleği 100 gb ise 80 gb’dan fazla bellek ayırma işleminin yapılmasına sırasında bir hata oluşturur.
Aşağıda her node için hizmetlerde ayrılması gereken minimum RAM miktarları gözükmektedir.
Couchbase Server’da bir node yeniden başlatıldığı zaman Couchbase Server o node için bir Warmup işlemi gerçekleştirir. Bu işlemde diskteki veriler sıra ile belleğe yüklenmektedir.
Sık kullanılan veriler ‘Access log’ ‘u inceleyen ve uygun key’leri alan bir tarama işlemi ile belirlenir.
RAM’den veri çıkarma işlemi
Eğer bir bucket’ın bellek kotası aşılırsa, veriler Data Servisi tarafından bellekten çıkartılır. Her bir bucket 2 tane sınır seviyesine sahiptir. Birisi ‘mem_low_wat’ diğeri ‘mem_high_wat’ olarak adlandırılır. Bir bucket içine veri işlemi yaptığımızı düşünelim. Eğer yüklenen verilerin miktarı ‘mem_low_wat’ seviyesine gelirse bir şey olmaz. Ama daha da yüklemeye devam edip bellekteki veri miktarını ‘mem_high_wat’ seviyesine getirirsek Data servisi bellek içindeki verileri ‘low_wat_mem’ seviyesine düşene kadar çıkarmaya başlar. Varsayalım verilerimizin miktarı ‘high_wat_mem’ seviyesine ulaştı ama verilerin yüklenme hızı verilerin bellekte silinme hızından daha hızlı. Böyle bir durumda bellekte şişme olacağından sistem ekranımıza yetersiz bellek miktarı diye uyarı gelecektir ve veri alım işlemi durdurulacaktır. Bellekteki veri miktarı yeterli seviyeye indikten sonra da veri alma işlemi devam edecektir.
Veriler, her birinin içerdiği meta-data’lara dayalı olarak, verinin son kullanılma tarihine göre çıkartılır. Bunun için NRU(Not Recently Used) algoritması kullanılır. Eğer öğe yakın zamanda kullanılmadıysa çıkartma işlemi adayıdır.
Varsayılan olarak ‘mem_high_wat’ için %85, ‘low_wat_mem’ için ise %75 oranı belirlenmiştir. Bu aktif ayarlar aktif vBucket’lar için %40i replika vBucket’lar için %60 ejection oranı belirlenmiştir.Expiry PagerSüresi dolmuş verileri bellekten ve diskten siler. Bundan sonra veri için bir ‘tombstone’ verisi oluşturulur ve 3 gün sonra bu veri de silinir. Expiry Pager her 60 dk’ da bir çalışacak şekilde yapılandırılmıştır.