1
votes

I am testing my rabbitmq 3 nodes cluster these days, I use the java tool to test,

[root@server-42 bin ]$ ./runjava  com.rabbitmq.perf.PerfTest -x1 -y1 -e testex -Hmqp://username:[email protected]/test' -t topic -k sample.info -s 1500 -i 20
id: test-154506-639, starting consumer #0
id: test-154506-639, starting consumer #0, channel #0
id: test-154506-639, starting producer #0
id: test-154506-639, starting producer #0, channel #0
id: test-154506-639, time: 20.000s, sent: 8913 msg/s, received: 8804 msg/s, min/avg/max latency: 6317/251907/727492 microseconds
id: test-154506-639, time: 40.004s, sent: 8993 msg/s, received: 8991 msg/s, min/avg/max latency: 157294/256691/387926 microseconds
id: test-154506-639, time: 60.011s, sent: 9029 msg/s, received: 9019 msg/s, min/avg/max latency: 146744/255631/384696 microseconds
id: test-154506-639, time: 80.017s, sent: 8946 msg/s, received: 8972 msg/s, min/avg/max latency: 164969/259147/723908 microseconds
id: test-154506-639, time: 100.019s, sent: 8971 msg/s, received: 8949 msg/s, min/avg/max latency: 164012/258115/353767 microseconds

I find my rabbitmq connection and channel status keeps at flow status. however why is it ? is there any way to increase the performance?

I thought the flow status to keep the publisher to send messages to quick, in case that server can not queue the messages.

but the sending rate I used to test seems not high at all, why they are still in flow status?

anyone can help? thanks in advance.

2

2 Answers

1
votes

Flow Control:

RabbitMQ will reduce the speed of connections which are publishing too quickly for queues to keep up.

If you want to learn more about the credit flow you can read this doc, in particular:

To see how credit_flow and its settings affect publishing, let’s see how internal messages flow in RabbitMQ. Keep in mind that RabbitMQ is implemented in Erlang, where processes communicate by sending messages to each other.

you can try to increase credit_flow parameter

1
votes

in my case, I was getting this due to Lack of memory (Too many unacked messages causes memory to be full which makes the connection in flow state)