Pavel Moravec created QPID-7677:
-----------------------------------

             Summary: [C++ broker] broker requires much more memory for AMQP1.0 
subscription than for 0-10 one
                 Key: QPID-7677
                 URL: https://issues.apache.org/jira/browse/QPID-7677
             Project: Qpid
          Issue Type: Improvement
          Components: C++ Broker
    Affects Versions: 0.32
            Reporter: Pavel Moravec


Having an AMQP 1.0 consumer of a queue increases memory usage of qpidd by much 
more than having an AMQP 0-10 consumer - the difference is approx. 0.5MB.

This affects scalable usage of the broker, where having thousands of 1.0 
consumers require gigabytes of memory.


Trivial test:

{code}
qpid-config add queue qqq

for i in $(seq 1 10); do qpid-receive -a qqq -f & sleep 0.1; done

# this added small 26kB VSZ and 75kB RSS per one consumer/receiver

for i in $(seq 1 10); do qpid-receive -a qqq -f --connection-options 
"{protocol:'amqp1.0'}" & sleep 0.1; done

# this added 640kB VSZ and 805kB RSS per one consumer/receiver
{code}

Better test: have multiple consumers on the same AMQP connection (I can provide 
such program in case of interest).


Running such scenario under valgrind/massif showed the extra memory is consumed 
by:

->91.90% (143,361,792B) 0x5D544F1: 
qpid::broker::amqp::OutgoingFromQueue::OutgoingFromQueue(qpid::broker::Broker&, 
std::string const&, std::string const&, boost::shared_ptr<qpid::broker::Queue>, 
pn_link_t*, qpid::broker::amqp::Session&, qpid::sys::OutputControl&, 
qpid::broker::SubscriptionType, bool, bool) (Outgoing.h:57)

And really, when I changed in:

https://github.com/apache/qpid-cpp/blob/master/src/qpid/broker/amqp/Outgoing.cpp#L68


the "deliveries(5000)" to "deliveries(50)", memory consumption dramatically 
decreased.


I don't understand this part of code, but please make the 
"CircularArray<Record> deliveries(5000)" more memory efficient.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to