Does anyone have thoughts on this? Should this be submitted in the issue 
tracker?
________________________________________
From: Jeff Armstrong [[email protected]]
Sent: Friday, August 26, 2011 3:08 PM
To: [email protected]
Subject: qpidd using approx 10x memory

When filling up some queues, I noticed that the qpidd process was using about 
10x the memory than was actually being used by the queues. To do a simple test 
on this I wrote a simple client that sends a bunch of messages that get stored 
in the queue, then compared the total byte depth with the memory used by qpidd.

After sending 1 million messages, the byte count (using qpid-stat -q) showed 
105MB, but checking the memory usage I saw 1.4GB (checked with htop and pmap). 
The messages were approximately 100 bytes large, so the byte count from 
qpid-stat makes sense. What doesn't make sense is that the total memory usage 
is over 10x as big. I checked the memory usage of qpidd before connecting with 
the client to send the messages and it was around 200MB, so there is still a 
discrepancy of about 1.1GB. These results also match with the original problem 
with an application I'm working on where qpidd used up all my memory (16GB) 
even though the queue sizes added up to about 1GB.

I'm using version 0.10. Is this a known issue? I couldn't find it in the issue 
tracker. Any workarounds?


Here is how I created the exchange/queues:
$ ./qpid-config add exchange direct qvue
$ ./qpid-config add queue testQueue
$ ./qpid-config bind qvue testQueue testBind


Here is the client code I used:
#include <iostream>
#include <qpid/client/Message.h>
#include <qpid/client/Connection.h>
#include <qpid/client/Session.h>

using namespace std;
using namespace qpid::client;

int main(int argc, char** argv) {
    Connection connection;
    connection.open("127.0.0.1");
    Session session = connection.newSession();

    int count = 0;
    while(true) {
        Message msg;
        msg.setData("Hello World! 0123456789 abcdefghijklmnopqrstuvwxyz 
weeeeeeeeeeeeeooooooooooooooooooooooooooooooooooooooo!");
        msg.getDeliveryProperties().setRoutingKey("testBind");
        session.messageTransfer(qpid::client::arg::content=msg, 
qpid::client::arg::destination="testQueue");
        count++;
        if (count % 1000 == 0) {
            cout << count << " messages sent" << endl;
        }
    }
    return 0;
}


Thanks,
Jeff
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to