Streams: Strange Throughput Variations with maxUnconfirmedMessages

76 views
Skip to first unread message

Peter Vaiko

unread,
Apr 12, 2025, 8:11:45 AMApr 12
to rabbitmq-users
While testing the streams with 4.0.8 and Java client 0.24  I found some strange behavior. 

I have a performance test where I publish 10,000 messages to a stream and measure the throughput (messages/second). The stream, the environment and the producer is recreated before each run.

The producer is all default, except with  different maxUnconfirmedMessages setting at each run. I run the same test series, once with 64 bytes per message, once with 2048 bytes per message.

The broker is a single node, running on Kubernetes in Docker Desktop, I run my JUnit test natively on Windows from my IDE.

I expect the throughput to increase as I use bigger values for maxUnconfirmedMessages, and that is mostly the trend, however, there are some very strange outliers.

maxUnconfirmedMessages=10 seems always producing almost exactly 100 messages per second, while 9 or 11 is two orders of magnitudes higher, with both 64 and 2048 byte messages. 

The 64 byte message throughput also shows a dip at  maxUnconfirmedMessages=100 (but not at 99 or 101) and there are some weird variations around 1000, see below.

Can someone explain me what is going on here?

rabbitmq_throughput.png


Peter Vaiko

unread,
Apr 15, 2025, 6:38:31 AMApr 15
to rabbitmq-users
Bump

Arnaud Cogoluègnes

unread,
May 12, 2025, 11:30:21 AMMay 12
to rabbitmq-users
Following up on this, I published a fix [1], it will be available in stream Java client 1.1.0.

There was a problem when accumulating messages and releasing them for publishing, but only for some (edge) values of the maxUnconfirmedMessage producer setting.

Thanks for reporting this.

Reply all
Reply to author
Forward
0 new messages