geri

Memcached, Redis ve Hazelcast performans karşılaştırması

18/03/2012

Ankara Yazılım Atölyesi Mart Etkinliği'nde Osman Üngür başarılı bir Redis sunumu yaptı. Sunumda gelen performans soruları üzerine Memcached, Redis ve Hazelcast ürünlerini kendi makinamda karşılaştırmaya karar verdim. Makina konfigürasyonum şöyle:

OS:        Mac OS X Lion 10.7.3
İşlemci:   2.4 GHz Intel Core 2 Duo
Bellek:    4 GB 1067 MHz DDR3
Memcached: 1.4.13
Redis:     2.4.8
Hazelcast: 2.0.1

Memcached testi için spymemcached, Redis testi için Jedis, Hazelcast testi için Hazelcast Native Java Client kütüphanelerini kullandım.

Uyguladığım testte üç ürüne de 16 byte uzunluğunda bir String'i 131072 kez yazıp okudum ve geçen süreyi ölçtüm. Aynı testi her ürün için 1, 2, 4, 8, 16, 32, 64 ve 128 thread ile tekrarladım. Ürünleri ayrı bir sunucuda değil yine kendi makinamda çalıştırdım. Başka bir deyişle test uygulaması ve ürünler aynı makinada çalıştılar. Hazelcast için yaptığım testi Memcached istemcisi ve Hazelcast Java istemcisi ile tekrarladım. Aslına bakılırsa sonuçlar üç ürün için de tatmin edici oldu. Yorumlamadan önce sonuçları paylaşayım. Süreler µs(1/1000ms) cinsindendir.

MemcachedRedisHazelcast
(Memcached client)
Hazelcast
(Native Java client)
1 thread19360279148358922954348435666415
2 thread12641400126587061947814520427113
4 thread9895999108815121554888615163085
8 thread8329887102569221262735011314341
16 thread740679511011977109995319453769
32 thread806957711247586102743238596793
64 thread92712241158952595455118171127
128 thread101655081216282893501568398450
Ortalama10642583118306181467092314648886

Genel görünümde Redis'in thread sayısından bağımsız olarak aynı performansı sürdürdüğünü görebiliyoruz. Thread sayısı arttıkça Hazelcast performansındaki artışa dikkat etmek gerek. Talip Ozturk ve Fuad Malikov çok iyi iş çıkarmışlar. Native Java Client ile Hazelcast'in 32, 64 ve 128 thread sayısındaki performansının üstüne çıkabilen yalnızca 8, 16 ve 32 thread sayısında Memcached oldu. Testin başlangıcında ürünler arasında en az özelliğe sahip olan Memcached performansının çok daha üstün olmasını bekliyordum. Memcached'in ortalama performansı üstün olsa da yoğun concurrent ortamlarda zirvenin sahibi Hazelcast olarak görünüyor. Redis de güçlü özellikleri, performansı ve kararlılığı ile kendini gösteriyor.

Testi tekrarlamak isteyenler için kodları aşağıda paylaşıyorum. Yaptığım testteki eksikleri/hataları yorum olarak bekliyorum.

Follow me on Twitter