[rabbitmq-discuss] disk space not released after persistent messages are consumed
Jianing Hu
hujn at polyvore.com
Mon Feb 14 22:52:01 GMT 2011
Thanks for the explanation. I ran a longer test and that is indeed the
behavior. The old file got deleted eventually.
Thanks,
- Jianing
On Thu, Feb 10, 2011 at 5:07 PM, Alexandru Scvorţov
<alexandru at rabbitmq.com> wrote:
> Hi,
>
>> After running this code I end up with a 3MB file in the
>> msg_store_persistent directory, even though rabbitmqctl list_queues
>> shows 0 messages in the queue. After restarting RabbitMQ server that
>> file grew by another 800KB. Any advice is greatly appreciated.
>
> That's more or less expected.
>
> The broker tries to write the messages to disk in files stored in that
> directory. The persister always has at least one file open and it will
> append to it any new messages. Since it only *appends* to the files,
> even if the messages get delivered to consumers, they'll still be on
> disk. Normally, the persister will delete files that only contain stale
> messages, but it won't do this to the file it's currently writing to.
> When the current file exceeds msg_store_file_size_limit, it will start
> on a new file. At that point, if the old file doesn't have any more
> messages, it will delete it. The size limit is about 16 Mb by default,
> so it's unsurprising that you have a 3 Mb file lying around.
>
> You can set msg_store_file_size_limit in rabbitmq.config.
>
> Does this answer your question?
>
> Cheers,
> Alex
>
> On Mon, Feb 07, 2011 at 05:27:07PM -0800, Jianing Hu wrote:
>> Hi,
>>
>> RabbitMQ newbie here so apologies in advance if what I'm doing is
>> obviously wrong.
>>
>> I'm experimenting with RabbigMQ 2.1.1 and it seems my persistent
>> message storage file keeps growing despite of messages being consumed.
>> Here's the code I used for testing. I'm using perl with Net::RabbitMQ
>>
>> use Net::RabbitMQ;
>> my $mq = Net::RabbitMQ->new();
>> $mq->connect("localhost", {
>> user => 'guest',
>> password => 'guest'
>> });
>> $mq->channel_open(1);
>> $mq->queue_declare(1, 'test', {
>> passive => 0,
>> durable => 1,
>> exclusive => 0,
>> auto_delete => 0
>> });
>>
>> my $data = 'foobar' x 200;
>> for (1..100000) {
>> $mq->publish(1, 'test', $data, {}, { delivery_mode => 2});
>> }
>>
>> $mq->consume(1, 'test', {
>> no_ack => 0
>> });
>> for (1..100000) {
>> my $msg = $mq->recv();
>> $mq->ack(1, $msg->{delivery_tag});
>> }
>>
>> After running this code I end up with a 3MB file in the
>> msg_store_persistent directory, even though rabbitmqctl list_queues
>> shows 0 messages in the queue. After restarting RabbitMQ server that
>> file grew by another 800KB. Any advice is greatly appreciated.
>>
>> Thanks,
>> - Jianing
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-discuss at lists.rabbitmq.com
>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
More information about the rabbitmq-discuss
mailing list