QPID-7677: C++ broker AMQP 1.0 subscription uses more memory than 0-10

AMQP 1.0 allocates a per-session buffer for unacknowledged message
deliveries. By default it holds up to 5000 deliveries. This commit adds the
qpidd option --session-max-unacked so the buffer can be made smaller if the
broker has a large number of sessions and the memory overhead is a problem.

The following values (in Kb) give an idea of the overhead per session, the
actual values will vary by platform and build type:

RSS per client for AMQP 0.10: 142
RSS per client for AMQP 1.0
qpidd --session-max-unacked=100: 	227 (diff 85)
qpidd --session-max-unacked=1000: 	349 (diff 207)
qpidd --session-max-unacked=5000: 	846 (diff 704)

The broker sending messages on a session without waiting for acknowledgement up
to the session-max-unacked limit (it may stop sending before the limit if the
aggregate link credit for the session is lower.) Once it reaches the limit it
will wait for acknowledgement from the client before sending more messages.
4 files changed
tree: 5c598bbb14e42438dbd6cd52e08bc33aff914002
  1. bin/
  2. bindings/
  3. CMakeModules/
  4. docs/
  5. etc/
  6. examples/
  7. include/
  8. management/
  9. managementgen/
  10. packaging/
  11. rubygen/
  12. specs/
  13. src/
  14. .gitignore
  15. .travis.yml
  16. appveyor.yml
  17. BuildInstallSettings.cmake
  18. cmake_uninstall.cmake.in
  19. CMakeLists.txt
  20. CTestConfig.cmake
  21. CTestCustom.cmake
  22. INSTALL-WINDOWS.txt
  23. INSTALL.txt
  24. LICENSE.txt
  25. NOTICE.txt
  26. README.md
  27. RELEASE.md
  28. VERSION.txt
README.md

Qpid C++

Introduction

Qpid C++ is a C++ implementation of the AMQP protocol described at http://amqp.org/.

For additional software or information on the Qpid project go to:

http://qpid.apache.org

For documentation, go to:

http://qpid.apache.org/documentation

Available documentation

  • INSTALL.txt - How to install Qpid C++
  • LICENSE.txt - The Apache license
  • NOTICE.txt - Corresponds to the section 4 d of the Apache License, Version 2.0
  • docs/ - Feature and design notes, other documentation

Quick start

In C++ distributions:

mkdir BLD      # The recommended way to use cmake is in a separate
               # build directory
cd BLD
cmake ..       # Generates code and makefiles
make test      # Runs tests
make install   # Installs the client and daemon

The INSTALL.txt notes contain more detailed information on compiling and installing this software.

examples/README.txt describes the C++ client API examples.