[rabbitmq-discuss] hanging on message sending with py-amqplib

tsuraan tsuraan at gmail.com
Fri Oct 1 23:05:07 BST 2010

> For the archives, setting a prefetch message count limit of 1,000 is
> allowing my other agents to proceed.  I'm concerned that there is
> might be a starvation condition inside of rabbit, but the throttling
> does seem to keep it from manifesting.

Nevermind that, it solved one case of hanging, but I have another on a
totally idle machine where all my tx_commit calls are hanging.  There
is no disk activity at all; the system is just stuck with a small
handful of processes (consumers/producers) stuck at tx_commit.  I can
restart the processes, and they run until their first tx_commit, and
then hang.  top shows no CPU activity, and iotop shows no disk
activity.  This is also with rabbit 2.1.0 and erlang 13B4.

A sample python script that's hanging for me is:

>>> c=connect()
>>> from amqplib.client_0_8 import Message
>>> ch=c.channel()
>>> ch.tx_select()
>>> ch.basic_publish(m, 'amq.direct', 'foo')
>>> ch.tx_commit()

The tx_commit call just never returns.  There isn't anything
apparently consuming from any queue, as the disks are entirely idle,
so I don't know what's going on here.  I have full shell access to
this machine, so any commands that you can think of that could be done
through remsh, I'd be happy to try.  I don't know if I can get you
guys direct access to the machine, but I can try if you need me to.

I have a total of 13 queues, most of which are pretty close to empty.
One of them has ~50,000 and another has ~600,000 messages.  All are
durable, and all messages are persistent.  The huge queue's consumer
is completely disabled right now, so its consumer isn't generating any
traffic of any kind.

More information about the rabbitmq-discuss mailing list