-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance degradation with slow consumers [v2.9.X, v2.10.X] #5394
Comments
Server 2.9.20 is now quite a while out of date, let us know how latest 2.10 works for you. |
Any updates here? We have the same issue on our cluster. Thanks |
@nenych are you a Synadia customer? |
@derekcollison No, I am not. |
No worries, we will always do our best to help out the ecosystem. We do prioritize customers of course. We would need to do a video call with you I think as a next step to really understand what is going on. |
@derekcollison Sure, we can have a video call. Right now we have some test infrastructure where can show you the problem and our findings. |
Will see if @wallyqs has some time to jump on a call. |
Hi @nenych ping me at |
I think it is just due to the detection of consumer(s) that are falling behind and the server stalls the fast producers. Running the server in Debug mode (-D) should show you messages similar to That has always been the case (although we did tweak the stalling approach along the years). |
Observed behavior
Performance degradation after the slow consumer connection.
As you can see below, we are observing about 30% degradation of the incoming messages when the slow consumer connected, and about 50% after the second one.
Expected behavior
Stop sending messages to the slow consumers until their buffers are empty without slowing down the server.
Server and client version
Server: 2.9.20
Python library: nats-py 2.7.2
Host environment
Local:
MacOS 14.4.1, arm64, Docker 26.0.0
The same behavior with the amd64 emulator (--platform=linux/amd64 flag).
GKE
Container-Optimized OS, amd64, containerd
Steps to reproduce
Prepared required configs and docker-compose file that will start NATS, Prometheus, an exporter, and two consumers: https://github.com/nenych/nats-test.
Steps to run
Explore metrics
The text was updated successfully, but these errors were encountered: