I almost feel as though rabbitmq can&#39;t push items to my consumer fast enough, I had a backed up queue with 20 consumers and spawned another watching the items get processed and it just seemed so slow, saw numerous pauses between item processing and I don&#39;t believe it is the consumer&#39;s fault.<div>

<br></div><div>I am using the Python library for the consumer part.</div><div><br></div><div>Suhail<br><br><div class="gmail_quote">On Mon, Sep 7, 2009 at 8:23 AM, Chuck Remes <span dir="ltr">&lt;<a href="mailto:cremes.devlist@mac.com">cremes.devlist@mac.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
On Sep 7, 2009, at 1:07 AM, aisha fenton wrote:<br>
<br>
&gt; Hi,<br>
&gt; I&#39;m sure I&#39;m doing something wrong since I can&#39;t find reference to<br>
&gt; this anywhere else. What I&#39;m seeing is that the performance of<br>
&gt; draining a queue gets slower as the queue size increases.<br>
&gt;<br>
&gt; I&#39;m aware of the issue in RabbitMQ 1.6 that means that when it runs<br>
&gt; out of physical memory that it&#39;s performance degrades because it<br>
&gt; starts swapping out. But I&#39;m not anywhere close to running out of<br>
&gt; memory yet, and the degradation starts almost immediately and<br>
&gt; increases linearly as the queue depth grows.<br>
&gt;<br>
&gt; I am publishing 500mps to an exchange. Each message is about 1KB. I<br>
&gt; have a single fanout queue bound to the exchange. A single consumer is<br>
&gt; popping messages off the queue.<br>
&gt;<br>
&gt; When the queue is less than 20,000 messages I can pop 300mps off the<br>
&gt; queue. When the queue is 200,000 messages the performance drop to<br>
&gt; 40-80mps.<br>
&gt;<br>
&gt; I&#39;m running RabbitMQ 1.6.0. And nether rabbitmq, the consumer, or the<br>
&gt; publisher are using more than 40% CPU.<br>
&gt;<br>
&gt; I assume I shouldn&#39;t be seeing this? Any help much appreciated.<br>
<br>
</div>You didn&#39;t include any code, but I&#39;m going to take a stab in the dark<br>
anyway. If you are using the ruby amqp gem you might be doing<br>
something like this:<br>
<br>
def next_message<br>
 � exchange = MQ.fanout &#39;foo&#39;<br>
 � queue = MQ.queue &#39;bar&#39;<br>
<br>
 � queue.bind exchange<br>
<br>
 � newest_message = queue.pop<br>
end<br>
<br>
In the code above the call to MQ.&lt;whatever&gt; is opening a new channel<br>
to rabbitmq each time the method is called. You are essentially<br>
leaking channels all over the place every time you try to pop a new<br>
message.<br>
<br>
If you aren&#39;t using the ruby amqp stuff, I still recommend checking<br>
your code for whatever library you chose. You only need to allocate a<br>
few channels and reuse them.<br>
<font color="#888888"><br>
cr<br>
</font><div><div></div><div class="h5"><br>
<br>
_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><a href="http://mixpanel.com">http://mixpanel.com</a><br>Blog: <a href="http://blog.mixpanel.com">http://blog.mixpanel.com</a><br>
</div>