Hey list,

We're migrating from our currently operational cluster to a new one in a
different EC2 region. As part of this migration, we'd like to move from
Bitcask to eLevelDB - mostly for the benefits provided by secondary indexes.

We also use Multi-backend configuration, in order to split our various
client's data into entirely separate spaces on disk (this is useful for
legal reasons). I made the simple change from "riak_kv_bitcask_backend" to
"riak_kv_eleveldb_backend" in our config, and did some calculations for
"max_open_files", and then started a new node.

It fails with the following error in short order:

> cat error.log
2013-09-09 03:49:51.391 [error] <0.715.0>@riak_kv_vnode:init:375 Failed to
start riak_kv_multi_backend Reason: [{riak_kv_eleveldb_backend,{db_open,"IO
error:
/mnt/riak/eleveldb/client1/365375409332725729550921208179070754913983135744/000015.dbtmp:
Too many open files"}}]
2013-09-09 03:49:51.392 [error] <0.940.0>@riak_kv_vnode:init:375 Failed to
start riak_kv_multi_backend Reason: [{riak_kv_eleveldb_backend,{db_open,"IO
error:
/mnt/riak/eleveldb/client2/570899077082383952423314387779798054553098649600/CURRENT:
Too many open files"}},{riak_kv_eleveldb_backend,{db_open,"IO error:
/mnt/riak/eleveldb/client3/570899077082383952423314387779798054553098649600/CURRENT:
Too many open files"}},{riak_kv_eleveldb_backend,{db_open,"IO error:
/mnt/riak/eleveldb/client4/570899077082383952423314387779798054553098649600/CURRENT:
Too many open files"}},{riak_kv_eleveldb_backend,{db_open,"IO error:
/mnt/riak/eleveldb/client5/570899077082383952423314387779798054553098649600/CURRENT:
Too many open files"}},{riak_kv_eleveldb_backend,{db_open,"IO error:
/mnt/riak/eleveldb/client6/570899077082383952423314387779798054553098649600/CURRENT:
Too many open files"}}]

And some relevant app.config:

            {multi_backend_default, <<"default">>},
            {multi_backend, [
                %% Default fallback: this is unused
                {<<"default">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/default"}
                ]},
                {<<"eleveldb_client1">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client1"}
                ]},
                {<<"eleveldb_client2">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client2"}
                ]},
                {<<"eleveldb_client3">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client3"}
                ]},
                {<<"eleveldb_client4">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client4"}
                ]},
                {<<"eleveldb_client5">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client5"}
                ]},
                {<<"eleveldb_client6">>, riak_kv_eleveldb_backend, [
                    {data_root, "/mnt/riak/eleveldb/client6"}
                ]}
            ]},

            .. snip ..

             %% Default cache size of 8MB
             {cache_size, 8388608},
             %% Maximum number of files open at once per partition
             {max_open_files, 50}

I've set the "riak soft/hard nofile 65536" in /etc/security/limits.conf, so
presumably this "Too many open files" error is referring to the
"max_open_files" option as part of eLevelDB config. The RAM in each machine
is 3.5GB free, so I calculated on a 5 node cluster this 50 max_open_files
limit.

- Is there something about Multi-backend I haven't taken into account?
- Do I need a larger max_open_files? (And thus more RAM? :)

Cheers!
Matt
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to