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?
