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
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com