I'm trying to benchmark the performance of swiftMQ 5.0.0 with producer and consumer application I wrote so that I can vary the number of producer threads and consumer threads. I have added a delay on the consumer to simulate the time taken to process a message. I have run a test by setting the producer threads fixed at 2, and by varying the number of consumer threads from 20 to 92 in steps of 4.
Initially, the producer rate starts high and consumer rate is low (as expected due to the delay added and less number of consumer threads).
As the number of consumer threads increase, the producer rate drops and consumer rate increases and they become equal at around 48 consumer threads.
After that, as the number of consumer threads further increase, both producer and consumer rates keep increasing linearly. I am wandering what the reason for this behavior is?
see this image for the
result graph
Notes:
- I have disabled flow control at queue level by setting
flowcontrol-start-queuesize="-1"
.
- I also have not set a value to
inbound-flow-control-enabled
in routing swiftlet. (I believe it
defaults to false)
Any help on this matter is much appreciated. TIA
question from:
https://stackoverflow.com/questions/65901516/why-does-swiftmq-show-flow-control-behaviour-even-when-flow-control-is-disabled 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…