<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 27, 2012, at 7:48 AM, Yousuf Fauzan wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">This is great.<div><br></div><div>I was loading data using Python. My code would spawn 10 threads and put data in a queue. All threads would read data from this queue.</div><div>However, all threads were hitting the same server/load balancer.</div>
<div><br></div><div>I tried a different setup too. Where I spawned processes with each process having its own queue. In this case too, all processes were hitting the same server.</div><div><br></div><div>I just now made a change to my code. So now I have 10 threads randomly selecting a node and storing data in it.</div>
<div>Again, I am getting around 50 writes/sec</div></blockquote><div><br></div><div>When the threads randomly pick a node, do they create a new connection to it, or do they pull the connection from</div><div>a pool? As you saw with the throughput difference between curl and python, persistent connections make</div><div>big difference.</div><br><blockquote type="cite"><div><br></div><div>Could there be something wrong with the way I have written my loader script?<br><br><div class="gmail_quote">On Wed, Jun 27, 2012 at 5:10 PM, Russell Brown <span dir="ltr"><<a href="mailto:russell.brown@mac.com" target="_blank">russell.brown@mac.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div class="im"><div>On 27 Jun 2012, at 12:36, Yousuf Fauzan wrote:</div><br>
<blockquote type="cite">So I changed concurrency to 10 and put all the IPs of the nodes in basho bench config.<div>Throughput is now around 1500.</div><div><br></div></blockquote><div><br></div></div><div>I guess you can now try 5 or 15 concurrent workers and see which is optimal for that set up to get a good feel for the sizing of any connection pools for your application.</div>
<div><br></div><div>You can also see how adding nodes and adding workers effects your results to help you size the cluster you need for your expected usage.</div><div><br></div><div>Cheers</div><span class="HOEnZb"><font color="#888888"><div>
<br></div><div>Russell</div></font></span><div><div class="h5"><br><blockquote type="cite"><div><br><div class="gmail_quote">On Wed, Jun 27, 2012 at 4:40 PM, Russell Brown <span dir="ltr"><<a href="mailto:russell.brown@mac.com" target="_blank">russell.brown@mac.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div>On 27 Jun 2012, at 12:09, Yousuf Fauzan wrote:</div><br>
<blockquote type="cite">I used examples/riakc_pb.config<div><br></div><div><div>{mode, max}.</div><div><br></div><div>{duration, 10}.</div><div><br></div><div>{concurrent, 1}.</div></div></blockquote><div><br></div></div>

<div>Try upping this. On my local 3 node cluster with 8gb ram and an old, cheap quad core per box I'd set concurrency to 10 workers.</div><div><br><blockquote type="cite"><div><div><br></div><div>{driver, basho_bench_driver_riakc_pb}.</div>

<div>
<br></div><div>{key_generator, {int_to_bin, {uniform_int, 10000}}}.</div><div><br></div><div>{value_generator, {fixed_bin, 10000}}.</div><div><br></div><div>{riakc_pb_ips, [{<IP of one of the nodes>}]}.</div></div>

</blockquote><div><br></div></div><div>I add all the IPs here, one entry per node.</div><div><div><br><blockquote type="cite"><div><div><br>
</div><div>{riakc_pb_replies, 1}.</div><div><br></div><div>{operations, [{get, 1}, {update, 1}]}.</div><div><br></div><br><div class="gmail_quote">On Wed, Jun 27, 2012 at 4:37 PM, Russell Brown <span dir="ltr"><<a href="mailto:russell.brown@mac.com" target="_blank">russell.brown@mac.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div>On 27 Jun 2012, at 12:05, Yousuf Fauzan wrote:</div><br>
<blockquote type="cite">I did use basho bench on my clusters. It should throughput of around 150<br></blockquote><div><br></div></div>Could you share the config you used, please?</div><div><div><div><br><blockquote type="cite">


<br><div class="gmail_quote">On Wed, Jun 27, 2012 at 4:24 PM, Russell Brown <span dir="ltr"><<a href="mailto:russell.brown@mac.com" target="_blank">russell.brown@mac.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div>On 27 Jun 2012, at 11:50, Yousuf Fauzan wrote:</div><br>
<blockquote type="cite">Its not about the difference in throughput in the two approaches I took. Rather, the issue is that even 200 writes/sec is a bit on the lower side.<div>I could be doing something wrong with the configuration because people are reporting throughputs of 2-3k ops/sec</div>




<div><br></div><div>If anyone here could guide me in setting up a cluster which would give such kind of throughput.</div></blockquote><div><br></div></div><div>To get the kind of throughput I use multiple threads / workers. Have you looked at basho_bench[1], it is a simple, reliable tool to benchmark Riak clusters?</div>



<div><br></div><div>Cheers</div><div><br></div><div>Russell</div><div><br></div><div>[1] Basho Bench - <a href="https://github.com/basho/basho_bench" target="_blank">https://github.com/basho/basho_bench</a> and <a href="http://wiki.basho.com/Benchmarking.html" target="_blank">http://wiki.basho.com/Benchmarking.html</a></div>



<br><blockquote type="cite"><div><div><div><br></div><div>Thanks,</div><div>Yousuf<br><br><div class="gmail_quote">On Wed, Jun 27, 2012 at 4:02 PM, Eric Anderson <span dir="ltr"><<a href="mailto:anderson@copperegg.com" target="_blank">anderson@copperegg.com</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><div>On Jun 27, 2012, at 5:13 AM, Yousuf Fauzan <<a href="mailto:yousuffauzan@gmail.com" target="_blank">yousuffauzan@gmail.com</a>> wrote:</div>




<div><br><blockquote type="cite">Hi,<div><br></div><div>I setup a 3 machine riak SM cluster. Each machine used 4GB Ram and riak OpenSource SmartMachine Image.</div><div><br></div><div>Afterwards I tried loading data by following two methods</div>




<div>1. Bash script</div>
<div><div>#!/bin/bash</div><div>echo $(date)</div><div>for (( c=1; c<=1000; c++ ))</div><div>do</div><div><span style="white-space:pre-wrap">    </span>curl -s -d 'this is a test' -H "Content-Type: text/plain" <a href="http://127.0.0.1:8098/buckets/test/keys" target="_blank">http://127.0.0.1:8098/buckets/test/keys</a></div>





<div>done</div><div>echo $(date)</div></div><div><br></div><div>2. Python Riak Client</div><div>c=riak.RiakClient("10.112.2.185") </div><div>b=c.bucket("test")</div><div>for i in xrange(10000):o=b.new(str(i), str(i)).store()</div>





<div><br></div><div>For case 1, throughput was 25 writes/sec</div><div>For case 2, throughput was 200 writes/sec</div><div><br></div><div>Maybe I am making a fundamental mistake somewhere. I tried the above two scripts on EC2 clusters too and still got the same performance.</div>





<div><br></div><div>Please, someone help</div></blockquote><br></div><div><br></div></div></div><div>The major difference between these two is the first is executing a binary, which has to basically create everything (connection, payload, etc) every time through the loop.  The second does not - it creates the client once, then iterates over it keeping the same client and presumably the same connection as well.  That makes a huge difference.</div>




<div><br></div><div>I would not use curl to do performance testing.  What you probably want is something like your python script that will work on many threads/processes at once (or fire them up many times).</div><span><font color="#888888"><div>




<br></div><div><br></div><div>Eric Anderson<br>Co-Founder<br>CopperEgg<br></div><div><br></div><div><br></div><div><br></div><br></font></span></div></blockquote></div><br></div></div></div>
_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>



</blockquote></div><br></div>
</blockquote></div><br>
</blockquote></div><br></div></div></div>
</blockquote></div><br></div>
</blockquote></div></div></div><br></div>
</blockquote></div><br></div>
</blockquote></div></div></div><br></div></blockquote></div><br></div>
_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a><br>http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com<br></blockquote></div><br></body></html>