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]