日期:2014-05-16  浏览次数:20392 次

作为内存数据库的riak
riak的邮件列表最近的讨论
riak_kv_memory_backend in production


Here are some suggestions for running the memory backend in production:

1. Since you are running a single node cluster, set your n_val to 1 [1]
2. Make sure you set the max_memory parameter [2] to prevent the node
from OOM'ing.

3. In order to get greater concurrency and throughput with the memory
backend, I suggest increasing your ring_creation_size to 128 or 256.
You might need to test which is more performant on your hardware.

4. Turn anti_entropy off.  It will just be unnecessary overhead with
your workload.

5. Make sure your ulimit is raised [3]

6. Apply our recommended system tunings [4]

7. You may need to raise some Erlang resource limits in your vm.args file [5]


[1] http://docs.basho.com/riak/latest/references/Configuration-Files/#app-config
[2] http://docs.basho.com/riak/latest/tutorials/choosing-a-backend/Memory/#Enabling-and-Configuring-the-Memory-Backend
[3] http://goo.gl/6LCiq
[4] http://docs.basho.com/riak/latest/cookbooks/Linux-Performance-Tuning/#Linux-Tuning
[5] http://goo.gl/bRzeT

Btw, another alternative is to use the leveldb memory-backend impl
(prevents gc/storage overhead from erlang tables).  You'll have to patch up
basho's fork of leveldb and include/compile/enable the memory-backend impl
from stock leveldb.

> We have a need to store transient data just in
> memory ( never hitting persistent store). I'm testing riak on aws with 3
> node cluster and looks good so far.   Just wanted to find out what kind of
> setup people are using in production.
>