[rabbitmq-discuss] RabbitMQ 1.6 persistence?

Chris Wiegand cwiegand at mobileaccord.com
Thu Jul 16 16:24:39 BST 2009


Yeah, I get a stack trace that essentially says it tried to allocate more memory than allowed. I cut-and-pasted the console response below, if you want I can send over the erl_crash.dmp file (818 kb).

I actually was able to solve the problem using (thanks Wilson Ke!) - I was only declaring the messages persistent, but not the queue itself. Once I declared the queue (and exchange, to be safe) to be durable it started working as expected.

Here's the error I get on the console:

D:\rabbitmq_server-1.6.0>sbin\rabbitmq-server.bat
RabbitMQ 1.6.0 (AMQP 8-0)
Copyright (C) 2007-2009 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd.
Licensed under the MPL.  See http://www.rabbitmq.com/

node        : rabbit at Tomato
log         : C:/Documents and Settings/Administrator/Application Data/RabbitMQ/log/rabbit.log
sasl log    : C:/Documents and Settings/Administrator/Application Data/RabbitMQ/log/rabbit-sasl.log
database dir: c:/Documents and Settings/Administrator/Application Data/RabbitMQ/db/rabbit-mnesia

starting database             ...done
starting core processes       ...done
starting recovery             ...done
starting persister            ...done
starting guid generator       ...done
starting builtin applications ...done
starting TCP listeners        ...done

broker running

Crash dump was written to: erl_crash.dump
binary_alloc: Cannot allocate 251777643 bytes of memory (of type "binary").

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

-----Original Message-----
From: Ben Hood [mailto:0x6e6562 at gmail.com] 
Sent: Wednesday, July 15, 2009 4:48 PM
To: Chris Wiegand
Cc: rabbitmq-discuss at lists.rabbitmq.com
Subject: Re: [rabbitmq-discuss] RabbitMQ 1.6 persistence?

Chris,

On Tue, Jul 14, 2009 at 11:59 PM, Chris
Wiegand<cwiegand at mobileaccord.com> wrote:
> I'm finding that if the erlang session dies

What do you mean by Erlang session? Do you mean that the Erlang VM process dies?

> (like say if I kill it, or try to pump in 1 million
> messages and it runs out of memory),

In 1.6.0 every message is resident in memory - solution to this is
being developed ATM.

> and then I re-start the RabbitMQ server
> it takes a rather long time to load the persistence stuff, but then just
> clears out the queues, and the file (rabbit_persister.LOG) just gets
> truncated and the messages were not persisted.
>
>
>
> Am I misunderstanding how RabbitMQ implements persistence? I expected that
> if the broker stops, and then gets relaunched that it would reload the last
> saved state for the queues, etc.., but that doesn't seem to be taking place.
> We're running it under Windows, under the most recent version of erlang
> (also just downloaded last week), in case that would affect anything. I'll
> try this under Linux and OpenSolaris here soon, in case that makes a
> difference.
>
>
>
> I'm using the .Net bindings, and setting the BasicProperties' DeliveryMode
> to 2 for persistence, is there anything else I have to do to make a queue
> persist?

OFV and if you have queues bound to your exchanges, what you are
describing should probably not be happening. Can you give us a cut
down version of your code that reproduces this behaviour?

Ben




More information about the rabbitmq-discuss mailing list