[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