Hello DeadZen,

Yes, networking interconnect becomes a bigger issue with more nodes in the 
cluster. A Riak cluster is actually a fully meshed network of erlang virtual 
machines. Multiple 1/10 gig nics dedicated to inter/intra networking are your 
friends. That said, we have many customers running many 50+ node clusters. 

Happy thanksgiving ppl! 
-Alexander 


@siculars
http://siculars.posthaven.com

Sent from my iRotaryPhone

> On Nov 23, 2016, at 10:59, DeadZen <dead...@deadzen.com> wrote:
> 
> ok I loled at this. then got worries trump could win a node election.  
> 
> anyways. 24gigs per riak server is not a bad safe bet. 
> Erlang in general is ram heavy. It uses it more effectively then most 
> languages wrt concurrency, but  ram is the fuel for concurrency and buffer 
> for operations, especially dumb operations involving large orange loud-mouth 
> objects.. as pointed out you can increase cumulative resources by adding more 
> physical nodes. and there is a trade off for adding more virtual nodes. 
> theres also an IPC trade off adding more then a few dozen physical nodes in 
> the same cluster. Theres also possiby a trade off using riak ts and riak kv 
> in the same cluster. Nothing but tradeoffs. 
> 
>> On Tue, Nov 22, 2016 at 12:29 PM Alexander Sicular <sicul...@basho.com> 
>> wrote:
>> Hi Daniel,
>> 
>> Ya, I'm not surprised you're having issues. 4GB ram is woefully underspecd. 😔
>> 
>> 🤓Stupid math:
>> 
>> 3e7 x 3 (replication) / 9 = 1e7 minimum objects per node ( absolutely more 
>> due to obj > 1MB size )
>> 
>> 1e7 x ~400 bytes per obj in ram = 4e9 ram per node just for bitcask. Aka 4 
>> GB. 
>> 
>> You already hit your limit. We can stop here. Done. End of. ☠️
>> 
>> 🤔But let's continue for funzies😋. 
>> 
>> Assuming defaults:
>> 
>> Default ring_size = 64 / 9 nodes ~ 7 virtual nodes per physical node. 
>> 
>> Default leveldb ram allocation = 70%
>> 
>> Leveldb operates, aka consumes resources including ram, on a vnode basis. It 
>> likes to consume ram on the order of 300MB through 2.5GB per vnode, 
>> increasing in performance till it caps. Even if you did switch everything to 
>> level you'd still be redlined. 
>> 
>> Bottom line is that bitcask, leveldb and your OS are fighting for ram all 
>> day 'ery day😡. Why you hate them and make them fight like that?😩 Not nice! 
>> (Trumpisms!)🤓
>> 
>> -Alexander
>> 
>> ps. You probably want to bump to 128 ring size. More vnodes equals more 
>> parallelism, but also means more resource consumption. You prob want min 8 
>> (v)CPU and 16GB min ram. YMMV, check my math. 
>> 
>> pps. If you don't want to double your per VM cost (aws ec2, etc) you could 
>> add nodes to the cluster. Because Riak uniformly distributes data around the 
>> cluster adding nodes increase total resources to the cluster, reduces number 
>> of objects allocated to each node. The converse is also true, if you double 
>> your node size you could halve your node count. That said, systems like Riak 
>> like prefer more nodes. It's just a math game. 
>> 
>> @siculars
>> http://siculars.posthaven.com
>> 
>> Sent from my iRotaryPhone
>> 
>>> On Nov 22, 2016, at 08:51, Daniel Miller <dmil...@dimagi.com> wrote:
>>> 
>>> Hi Alexander,
>>> 
>>> Thanks for responding.
>>> 
>>> > How many nodes?
>>> 
>>> We currently have 9 nodes in our cluster.
>> 
>>> 
>>> 
>>> > How much ram per node?
>> 
>>> 
>>> Each node has 4GB of ram and 4GB of swap. The memory levels (ram + swap) on 
>>> each node are currently between 4GB and 5.5GB.
>> 
>>> 
>>> 
>>> > How many objects (files)? What is the average file size?
>>> 
>> 
>>> We currently have >30 million objects, and I analyzed the average object 
>>> size before we migrated data into the cluster it was about 4KB/object, with 
>>> some objects being much larger (multiple MB). Is there an easy way to get 
>>> this information from a running cluster so I can give you more accurate 
>>> information?
>>> 
>> 
>>> 
>>> On Tue, Nov 22, 2016 at 2:42 AM, Alexander Sicular <sicul...@gmail.com> 
>>> wrote:
>>> Hi Daniel,
>>> 
>>> How many nodes?
>>> -You should be using 5 minimum if you using the default config. There
>>> are reasons.
>>> 
>>> How much ram per node?
>>> -As you noted, in Riak CS, 1MB file chunks are stored in bitcask.
>>> Their key names and some overhead consume memory.
>>> 
>>> How many objects (files)? What is the average file size?
>>> -If your size distribution significantly skews < 1MB that means you
>>> will have a bunch of files in bitcask eating up ram.
>>> 
>>> Kota was a former Basho engineer who worked on CS... That said, Basho
>>> may not support a non standard deployment.
>>> 
>>> -Alexander
>>> 
>>> On Mon, Nov 21, 2016 at 2:45 PM, Daniel Miller <dmil...@dimagi.com> wrote:
>>> > I found a similar question from over a year ago
>>> > (http://lists.basho.com/pipermail/riak-users_lists.basho.com/2015-July/017327.html),
>>> > and it sounds like leveldb is the way to go, although possibly not well
>>> > tested. Has anything changed with regard to Basho's (or anyone else)
>>> > experience with using leveldb backend instead of the mutli backend for CS?
>>> >
>>> > On Fri, Nov 4, 2016 at 11:48 AM, Daniel Miller <dmil...@dimagi.com> wrote:
>>> >>
>>> >> Hi,
>>> >>
>>> >> I have a Riak CS cluster up and running, and am anticipating exponential
>>> >> growth in the number of key/value pairs over the next few years. From
>>> >> reading the documentation and experience, I've concluded that the default
>>> >> configuration of CS (with riak_cs_kv_multi_backend) keeps all keys in 
>>> >> RAM.
>>> >> The OOM killer strikes when Riak uses too much RAM, which is not good 
>>> >> for my
>>> >> sanity or sleep. Because of the amount of growth I am anticipating, it 
>>> >> seems
>>> >> unlikely that I can allocate enough RAM to keep up with the load. Disk, 
>>> >> on
>>> >> the other hand, is less constrained.
>>> >>
>>> >> A little background on the data set: I have a sparsely accessed key set.
>>> >> By that I mean after a key is written, the more time passes with that key
>>> >> not being accessed, the less likely it is to be accessed any time soon. 
>>> >> At
>>> >> any given time, most keys will be dormant. However, any given key 
>>> >> _could_ be
>>> >> accessed at any time, so should be possible to retrieve it.
>>> >>
>>> >> I am currently running a smaller cluster (with smaller nodes: less RAM,
>>> >> smaller disks) than I expect to use eventually. I am starting to hit some
>>> >> growth-related issues that are prompting me to explore more options 
>>> >> before
>>> >> it becomes a dire situation.
>>> >>
>>> >> My question: Are there ways to tune Riak (CS) to support this scenario
>>> >> gracefully? That is, are there ways to make Riak not load all keys into 
>>> >> RAM?
>>> >> It looks like leveldb is just what I want, but I'm a little nervous
>>> >> switching over to only leveldb when the default/recommended config uses 
>>> >> the
>>> >> multi backend.
>>> >>
>>> >> As a stop-gap measure, I enabled swap (with swappiness = 0), which I
>>> >> anticipated would kill performance, but was pleasantly surprised to see 
>>> >> it
>>> >> return to effectively no-swap performance levels after a short period of
>>> >> lower performance. I'm guessing this is not a good long-term solution as 
>>> >> my
>>> >> dataset grows. The problem with using large amounts of swap is that each
>>> >> time Riak starts it needs to read all keys into RAM. Long term, as our
>>> >> dataset grows, the amount of time needed to read keys into RAM will 
>>> >> cause a
>>> >> very long restart time (and thus period of unavailability), which could
>>> >> endanger availability for a prolonged period if multiple nodes go down at
>>> >> once.
>>> >>
>>> >> Thanks!
>>> >> Daniel Miller
>>> >> Dimagi, Inc.
>>> >>
>>> >
>>> >
>>> > _______________________________________________
>>> > riak-users mailing list
>>> > riak-users@lists.basho.com
>>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>> >
>>> 
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to