<div dir="ltr">Hi Roman,<div><br></div><div>We use ec2 and autoscaling extensively as well.<br><div><br></div><div>If you are pushing 100% then you are out of the 'sweet spot' for the instance.</div><div><br></div>
<div>The first thing I suggest is to switch to C1 medium instances for your workload (1.7GB memory, 2 CPUs). These instances have 2.5 times the processing power of the M1 mediums for about the same price. Given what you have said about your workload, you can get by with less memory. Erlang/rabbitmq are very memory efficient (not like Java) and can really make use of the extra CPU.</div>
</div><div><br></div><div>Clustering will not buy you anything on smallish autoscaling instances, based upon your description, and will add more complexity than it removes, IMHO.</div><div><br></div><div>The second thing I would suggest is to experiment and test:</div>
<div><br></div><div>Spreading out across multiple instances, as you describe, is operationally complex. If your base load warrants it, you could try larger instances and fewer of them, e.g. C1 xlarge with 8 CPUs. We cluster 3 of these as the 'core' of a processing pipeline (we have variable numbers of pipelines in a region).</div>
<div><br></div><div>An advantage of larger instances is that they have consistently higher bandwidth and are less subject to 'noisy neighbors'.</div><div><br></div><div>However, you may want to use multiple queues anyway, in your architecture, in order to keep all the CPUs busy. We don't do that but there are many on the list who can offer good advice - and lots of previous messages about that.</div>
<div><br></div><div>We cluster and mirror our queues to avoid losing messages and to centralize administration. I would experiment with it if I were you. There is a small performance penalty.</div><div><br></div><div>BTW you don't need the TCP load balancer with a cluster: every machine can see every queue regardless of whether they are mirrored or not.</div>
<div><br></div><div>Hope this helps.</div><div><br></div><div>Michael</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 31, 2013 at 4:20 AM, Roman Kournjaev <span dir="ltr"><<a href="mailto:kournjaev@gmail.com" target="_blank">kournjaev@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi<div><br></div><div>I hope someone can help me out with some advice , cause I am struggling for quite a while now.</div>
<div><br></div><div>I have some ad server application running on AWS ec2. The server are tomcats that can scale , with the load right now I have 10 servers running. The overall load on the servers is something 1K rps . It produces twice as much messages that have to be persisted eventually.</div>
<div><br></div><div>Right now the servers send these messages to rabbitmq instances ( that are not connected to a cluster ) , each tomcat has an open connection to every rabbitmq broker and just picks one randomly to send a message.</div>
<div><br></div><div>On the other side I have a consumer that consumes all the messages from all the brokers.</div><div><br></div><div>The brokers are running on a medium instance ( thats 1 cpu and <font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">3.5 GB ram ) and the queues are not persistent or mirrored. The issue is that the brokers get to 100 cpu at speeds reaching 700 messages/sec. </span></font></div>
<div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br></span></font></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">I guess connecting the brokers to a cluster will only decrease the performance also i will have to configure a tcp load balancer to connect to the cluster from tomcats. Also creating a rabbitmq cluster is not trivial at all , especially if the brokers are on an auto scaling group.</span></font></div>
<div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br></span></font></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">So for the question : </span></font></div>
<div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br></span></font></div><div><ol><li><span style="line-height:18px;font-size:12px;font-family:verdana,arial,helvetica,clean,sans-serif">I read some benchmarks out there and could not understand whether the 700m/sec is slow or not. I can use a bigger instance with more CPU , but will the load grow linear ?</span><span style="line-height:18px;font-size:12px;font-family:verdana,arial,helvetica,clean,sans-serif"> </span></li>
<li><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">Do you spot anything wrong in the architecture ? Can you think of an overall better approach in the message chain ?</span></font></li>
</ol><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br></span></font></div></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">Thanks</span></font></div>
<span class="HOEnZb"><font color="#888888"><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px">Roman</span></font></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br>
</span></font></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br></span></font></div><div><font color="#000000" face="verdana, arial, helvetica, clean, sans-serif"><span style="font-size:12px;line-height:18px"><br>
</span></font></div></font></span></div><br>_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
<br></blockquote></div><br></div>