[rabbitmq-discuss] ERL crashes when messages are being pumped into a queue under win32 envir

Emile Joubert emile at rabbitmq.com
Thu Mar 31 16:25:40 BST 2011


Hi Ming,

On 30/03/11 10:40, Ming Li wrote:
> 1.using RabbitMQ2.4.0(windows bundle).winxp,creates an exchange and a queue.
>
> 2.use multiple sender to send messages into the created queue,only a
> single receiverreceiving message from the same queue.
>
> 3.while running, what i discovered is that the ERL's RAM usage continue
> to increase and then crash when it reaches a certain percentage
>
> Is there a way to prevent it from crashing?

Are you sure it's the broker that runs out of memory and not the 
receiver? Is the receiver and the rabbit broker running on the same 
hardware?

I see that the channel is not setting QoS. This will cause the broker to 
deliver messages to the receiver QueueingBasicConsumer as quickly as it 
can, and the receiver could run out of memory as a result. This is more 
likely to occur if the consumer is slower than the sender. The solution 
to this problem is to set the QoS prefetch count (IModel.BasicQos) to a 
small number and use explicit acknowledgements.

If it really is the broker that runs out of memory could you confirm 
whether the broker logfile contains entries with both "alarm_handler" 
and "vm_memory_high_watermark"? What else appears in the broker logfile 
near the time of the crash?

-Emile



More information about the rabbitmq-discuss mailing list