Best Java client ?

Alexander Zaitsev alexander.zaitsev at webamg.com
Wed May 14 13:18:58 UTC 2008


It is interesting that spymemcached client stores items less effective. 
Under the same conditions in 128Mb memcached instance:

spymemached: STAT curr_items 317886
danga: STAT curr_items 491882

Danga memcached is initialized with the following parameters:

        memCachedClient = new MemCachedClient();
        memCachedClient.setSanitizeKeys(false);
        memCachedClient.setCompressEnable(false);    
        memCachedClient.setPrimitiveAsString(false);

Spymemcached uses defaults.

--
Alexander Zaitsev
AMG Lab Sarl



Kristian Eide wrote:
> I recently had to make a choice of which memcached Java library to use 
> and I did some simple informal benchmarking between the Whalin client 
> and 'spymemcached'. While limited in scope I think the results are 
> quite clear.
>
> My test consisted of writing 2000 values and then reading them back; I 
> repeated this for various sized objects. I used only a single 
> Memcached Java object with a compression threshold of 16KB. I did not 
> adjust any of the defaults.
>
> The tests were run on Java 1.6, under Mac OS X, and a single instance 
> of memcached 1.2.4 on localhost with 64MB of memory. The computer has 
> 4 CPU cores.
>
> Here are the results for the Whalin client (numbers are in milliseconds):
>
> N: 2000 Size: 2 Store: 980 Fetch: 1372 kbPerSecond: 2 
> FetchesPerSecond: 1457
> N: 2000 Size: 4 Store: 596 Fetch: 1245 kbPerSecond: 6 
> FetchesPerSecond: 1605
> N: 2000 Size: 9 Store: 503 Fetch: 1122 kbPerSecond: 15 
> FetchesPerSecond: 1782
> N: 2000 Size: 19 Store: 391 Fetch: 1007 kbPerSecond: 36 
> FetchesPerSecond: 1984
> N: 2000 Size: 39 Store: 390 Fetch: 1013 kbPerSecond: 75 
> FetchesPerSecond: 1973
> N: 2000 Size: 81 Store: 363 Fetch: 992 kbPerSecond: 159 
> FetchesPerSecond: 2015
> N: 2000 Size: 168 Store: 370 Fetch: 978 kbPerSecond: 335 
> FetchesPerSecond: 2043
> N: 2000 Size: 350 Store: 357 Fetch: 967 kbPerSecond: 706 
> FetchesPerSecond: 2067
> N: 2000 Size: 729 Store: 375 Fetch: 1004 kbPerSecond: 1416 
> FetchesPerSecond: 1990
> N: 2000 Size: 1516 Store: 391 Fetch: 1051 kbPerSecond: 2815 
> FetchesPerSecond: 1901
> N: 2000 Size: 3154 Store: 398 Fetch: 1034 kbPerSecond: 5956 
> FetchesPerSecond: 1933
> N: 2000 Size: 6561 Store: 426 Fetch: 1072 kbPerSecond: 11946 
> FetchesPerSecond: 1864
> N: 2000 Size: 13647 Store: 545 Fetch: 1010 kbPerSecond: 26369 
> FetchesPerSecond: 1978
> N: 2000 Size: 28388 Store: 2321 Fetch: 1346 kbPerSecond: 41172 
> FetchesPerSecond: 1485
> N: 2000 Size: 59049 Store: 3681 Fetch: 1347 kbPerSecond: 85571 
> FetchesPerSecond: 1483
> Total: 28666 ms
>
> And here are the results with 'spymemcached':
>
> N: 2000 Size: 2 Store: 479 Fetch: 1081 kbPerSecond: 3 
> FetchesPerSecond: 1849
> N: 2000 Size: 4 Store: 196 Fetch: 831 kbPerSecond: 9 FetchesPerSecond: 
> 2405
> N: 2000 Size: 9 Store: 127 Fetch: 624 kbPerSecond: 28 
> FetchesPerSecond: 3203
> N: 2000 Size: 19 Store: 56 Fetch: 533 kbPerSecond: 69 
> FetchesPerSecond: 3750
> N: 2000 Size: 39 Store: 66 Fetch: 534 kbPerSecond: 142 
> FetchesPerSecond: 3740
> N: 2000 Size: 81 Store: 65 Fetch: 470 kbPerSecond: 336 
> FetchesPerSecond: 4252
> N: 2000 Size: 168 Store: 41 Fetch: 452 kbPerSecond: 725 
> FetchesPerSecond: 4424
> N: 2000 Size: 350 Store: 42 Fetch: 449 kbPerSecond: 1522 
> FetchesPerSecond: 4454
> N: 2000 Size: 729 Store: 46 Fetch: 457 kbPerSecond: 3112 
> FetchesPerSecond: 4371
> N: 2000 Size: 1516 Store: 50 Fetch: 449 kbPerSecond: 6594 
> FetchesPerSecond: 4454
> N: 2000 Size: 3154 Store: 57 Fetch: 442 kbPerSecond: 13918 
> FetchesPerSecond: 4518
> N: 2000 Size: 6561 Store: 131 Fetch: 476 kbPerSecond: 26876 
> FetchesPerSecond: 4194
> N: 2000 Size: 13647 Store: 227 Fetch: 495 kbPerSecond: 53830 
> FetchesPerSecond: 4039
> N: 2000 Size: 28388 Store: 1452 Fetch: 1044 kbPerSecond: 53074 
> FetchesPerSecond: 1914
> N: 2000 Size: 59049 Store: 2388 Fetch: 1131 kbPerSecond: 101952 
> FetchesPerSecond: 1768
> Total: 14909 ms
>
> The total time is almost half with 'spymemcached'. However, the 
> results get even more interesting when you use multiple threads. I 
> repeated the test with 4 threads and the total time for the Walins 
> client increased to 101415 ms, while 'spymemcached' only increased to 
> 29535. Perhaps you could get better performance out of the Walins 
> client by tweaking some settings, but it does seem that 'spymemcached' 
> is the way to go if you care at all about performance. The async set 
> can be especially helpful.
>
> I did not look at the CPU usage while the test was running, but I 
> would expect that 'spymemcached' has the edge here as well.
>



More information about the memcached mailing list