unknown command go-stream-locator #8501
-
Describe the bugOur service using rabbitmq-stream-go-client gets stuck at random times resulting in downtime. ¤ unknown command {request,11,{close,1,<<79,75>>}}, closing connection. After seeing the unknown command our service fails to create new consumers. Instead we can see an increasing number of go-steam-locator in the RabbitMQ UI. This will go on until our service runs out of memory and restarts. So the issue is that the go-stream-locators get stuck forever. (Usually around 30-40k connections with only go-stream-locators before our service OOM) Reproduction steps1.Throttle RabbitMQ. (resource wise in Kubernetes) NOTE: This is not necessary but increases the frequency of the problem Expected behaviorFor the go-stream-locators to vanish and messages going out to the consumers. Not hanging and taking about resources until crashing. Additional contextWe had this issue for 6 months now. We have decreased the frequency by lowering the opening and closing of connections. But it still happens randomly even with a lot of resources available. Using RabbitMQ 3.11.14 and rabbitmq-stream-go-client 1.1.2 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
We cannot suggest much with this amount of information. You have to be more specific as to how exactly you “throttle RabbitMQ” in step 1. No protocol RabbitMQ supports, and streams in particular, were designed for connection churn and short lived connections. A closing connection can end up with an incomplete frame and things like that. A traffic capture or an executable way to reproduce are essential when troubleshooting such workloads. |
Beta Was this translation helpful? Give feedback.
-
Are you absolutely sure that your clients do not leak connections? This is a very common scenario, and there are dedicated metrics to connection churn and counts for that reason. The maximum number of connections limit can be set up to a value of a few hundred to avoid the unbounded growth. There is also a separate set of recommendations for environments where connection churn is unavoidable. It helps RabbitMQ nodes "recycle" TCP connections quicker, up to a point. |
Beta Was this translation helpful? Give feedback.
-
@michaelklishin we can close this discussion in favour of rabbitmq/rabbitmq-stream-go-client#210 |
Beta Was this translation helpful? Give feedback.
@michaelklishin we can close this discussion in favour of rabbitmq/rabbitmq-stream-go-client#210