[rabbitmq-discuss] Connection and Channel Management
simon at rabbitmq.com
Fri Mar 9 11:57:58 GMT 2012
On 08/03/12 23:51, Glen Wagley wrote:
> Right now I am trying to figure out if I am limiting throughput to the
> cluster because each instance of the REST service and each instance of
> the windows service only has one connection to the cluster BUT multiple
> channels. We support about two dozen message types right now and I've
> created a channel for each one. Some channels have a lot of messages
> flowing through while some have little to none depending on the day. Is
> there a recommended approach to number of connections vs channels? We
> are starting to load test the system and I am trying to understand what
> could be tweaked to improve performance/throughput. Thanks.
To some extent the answer is "do your own tests", but to get you
thinking in the right direction, here are some pertinent facts:
* Starting a new channel on an existing connection involves one network
round trip - starting a new connection takes several.
* Each connection uses a file descriptor on the server. Channels don't.
* Publishing a large message on one channel will block a connection
while it goes out. Other than that, the multiplexing is fairly transparent.
* Connections which are publishing can get blocked if the server is
overloaded - it's a good idea to separate publishing and consuming
* There is only one AMQP parser process per connection. Therefore if you
have less connections than CPU cores, and are CPU bound in AMQP parsing,
you might not make full use of your server. This is generally pretty
rare but sounds like it may apply to you.
More information about the rabbitmq-discuss