Comments (4)
This is definitely a bug. I can reproduce the effects on my machine with the above code.
I believe the reason behind this is the way rabbitmq-c
handles memory. rabbitmq-c
allocates all incoming frames in a common memory pool, and it can only recycle this pool once all of the frames that have been allocated have been dealt with. When the QoS is set to be > 1, there is always a backlog of frames, so the memory pool is never allowed to recycle, thus the unbounded memory growth. Its also possible there is a frame on another channel hanging around somewhere, which would have the same effect, though not seeing the behavior when QoS == 1 makes me think its not another frame on a different channel.
This is what alanxz/rabbitmq-c#5 is supposed to solve (for a variety of reasons I don't think I will end up merging that PR). I think in this case however, I don't think even that will help, as this is all happening in one channel.
I think the 'solution' is: internally when reading frames we need to try hard to immediately use all of the frames that rabbitmq-c generates so that the memory pool can be recycled.
from simpleamqpclient.
The problem exists when there is only one channel. If I use seperate channels for consume/ack and publish memory pool is recycled just fine. But that's just a workaround not a solution.
from simpleamqpclient.
Interesting. Given what I think the problem is - I would not have expected separating out publish and consumer to their own Channel objects would've alleviated the memory issue. But I'm glad you found a workaround for the moment.
from simpleamqpclient.
from simpleamqpclient.
Related Issues (20)
- Classify Exceptions
- Consumer stops consuming inside Docker container (after some idle period) HOT 1
- fatal error: SimpleAmqpClient/SimpleAmqpClient.h: No such file or directory HOT 1
- Channel::OpenOpts::FromUri results in Access violation reading location 0x0000000000000000. HOT 3
- Version 2.4 compatibility with newer Rabbit servers HOT 4
- Latest NuGet of SimpleAmqpClient HOT 1
- Linking the library on Linux using cmake
- Keep alive for long running connections HOT 3
- App crashes when connection closes HOT 2
- `std::bad_alloc()` when header table is empty
- Handle node failure in RabbitMQ cluster
- Support for Quorum queues
- Bug,Exclusive always true!
- Channel can't open
- Compiling with boost 1.82 generates deprecation warnings
- On the issue of creating channels HOT 7
- Test Mate C++ VSCode
- warning: catching polymorphic type 'class AmqpClient::NotFoundException' by value [-Wcatch-value=] HOT 1
- build error with boost 1.53 HOT 1
- Linker error when building DLL on Windows 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simpleamqpclient.