Harici depolama desteği etkinleştirilmiş Memcached 1.6.0 sürümü

gerçekleşti bellek içi veri önbelleğe alma sisteminin önemli ölçüde serbest bırakılması Önbellek 1.6.0anahtar/değer biçimindeki veriler üzerinde çalışır ve kullanımı kolaydır. Memcached genellikle DBMS'ye ve ara verilere erişimi önbelleğe alarak yüksek yüklü siteleri hızlandırmak için hafif bir çözüm olarak kullanılır. kod sağlanan BSD lisansı altında.

Yeni sürüm, depolamanın uygulanmasını stabilize ediyor "harici mağaza", artık varsayılan olarak oluşturulmuştur (configure komut dosyasında devre dışı bırakmak için "-disable-extstore" seçeneği sağlanmıştır), ancak başlangıçta açık etkinleştirme gerektirir (eski kurulumlar güncellemeden sonra değişiklik yapılmadan çalışmaya devam edecektir). Extstore'un genellikle kararlı olduğu düşünülse de, çok büyük sistemlere uygulanırken dikkatli olunması tavsiye edilir.

Extstore, önbellek boyutunu genişletmek için SSD/Flash sürücüleri kullanmanıza olanak tanır. RAM'de olduğu gibi Flash depolama da kalıcı değildir ve yeniden başlatıldığında sıfırlanır. Yeni modun kapsamı büyük verilerin verimli bir şekilde önbelleğe alınmasını sağlamaktır. "Extstore" kullanıldığında, anahtarlar ve meta veriler daha önce olduğu gibi yalnızca RAM'de saklanır, ancak boyutu belirlenmiş bir eşiği aşan anahtarlarla ilişkili büyük veriler harici depolamada saklanır ve yalnızca işaretçi RAM'de kalır.

Anahtar küçük verilerle ilişkilendirilmişse Memcached her zamanki gibi çalışır, verileri bellekte tutar ve harici depolamaya erişmez. Çok fazla boş bellek varsa, en çok ihtiyaç duyulan veriler ek olarak RAM'deki önbellekte tamamen yerleştirilebilir (örneğin, yalnızca 1024 bayttan büyük ve 3600 saniye boyunca erişilmeyen nesnelerin Flash'a sıfırlanmasını belirtebilirsiniz) ).

Uygulama, depolama verimliliğinden (yüksek seviyede parçalanma) ödün vererek maksimum performans ve minimum CPU yükünü sağlayacak şekilde optimize edilmiştir. Flash sürücülerin ömrünü uzatmak için veriler sırayla ara belleğe alınır ve depolamaya aktarılır. Yeniden başlatmalar arasında önbellek durumunu kaydetmek için, 1.5.18 sürümünde görünen, önbellek dökümünü bir dosyaya boşaltma özelliğini kullanabilirsiniz. Bir sonraki başlatmada, önbelleğin boş olması nedeniyle içerik işlemcilerindeki yükteki ani artışları ortadan kaldırmak için önbelleği bu dosyadan geri yükleyebilirsiniz (önbellek hemen "sıcak" hale gelir).

Memcached 1.6'daki ikinci önemli değişiklik, toplu istekleri tek bir sistem çağrısında otomatik olarak işleyecek şekilde uyarlanan ağ iletişim kodunun yeniden işlenmesiydi. Önceden, tek bir TCP paketinde birden fazla GET komutu gönderilirken memcached, sonuçları ayrı sistem çağrılarıyla gönderiyordu. Memcached 1.6'da yanıtlar toplanır ve tek bir sistem çağrısı gönderilerek döndürülür. Sonuç olarak, artık sistem çağrısı başına ortalama 1.5 anahtar bulunmaktadır; bu, testlerde CPU yükünde %25'e kadar bir azalma ve gecikmede de yüzde birkaç oranında bir azalma olduğunu göstermektedir.

Ağ alt sisteminin yeniden tasarlanması, arabelleklerin statik olarak atanması yerine gerektiğinde arabelleklerin dinamik olarak tahsis edilmesine geçilmesini de mümkün kıldı. Bu optimizasyon, istemci tarafından kurulan bir bağlantı üzerinden yeni komutları beklerken bellek tüketimini 4.5 KB'tan 400-500 bayta düşürdü ve ayrıca malloc, realloc ve free'ye yapılan birçok çağrıdan kurtulmayı mümkün kıldı ve bu da gereksiz bellek parçalanmasına yol açtı. Çok sayıda bağlantıya sahip sistemler. Artık her çalışan iş parçacığı, etkin istemci bağlantıları için kendi okuma ve yazma arabellek havuzunu yönetiyor. Bu arabelleklerin boyutunu ayarlamak için
“-o resp_obj_mem_limit=N” ve “-o read_buf_mem_limt=N” seçenekleri sağlanmaktadır.

Şube 1.6 da kullanımdan kaldırıldığını duyurdu ikili protokol sunucuyla etkileşim. İkili protokol bakımı ve hata düzeltmeleri devam edecek ancak yeni özellikler ve mevcut özelliklerdeki güncellemeler taşınmayacaktır. Metin protokolü değişmeden gelişmeye devam edecektir. İkili protokolün yerini yeni bir protokol aldı meta (protokolün kompakt meta komutlara sahip metin versiyonu), performans ve güvenilirliğin optimum kombinasyonunu gösterir. Yeni protokol, daha önce metin ve ikili protokoller aracılığıyla kullanılabilen tüm işlemleri kapsar.

Kaynak: opennet.ru

Yorum ekle