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.
Memcached | Redis | Hazelcast (Memcached client) | Hazelcast (Native Java client) |
|
---|---|---|---|---|
1 thread | 19360279 | 14835892 | 29543484 | 35666415 |
2 thread | 12641400 | 12658706 | 19478145 | 20427113 |
4 thread | 9895999 | 10881512 | 15548886 | 15163085 |
8 thread | 8329887 | 10256922 | 12627350 | 11314341 |
16 thread | 7406795 | 11011977 | 10999531 | 9453769 |
32 thread | 8069577 | 11247586 | 10274323 | 8596793 |
64 thread | 9271224 | 11589525 | 9545511 | 8171127 |
128 thread | 10165508 | 12162828 | 9350156 | 8398450 |
Ortalama | 10642583 | 11830618 | 14670923 | 14648886 |
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