[rabbitmq-discuss] Connection and Channel Management

Simon MacMullen 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 
connections.

* 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.

Cheers, Simon

-- 
Simon MacMullen
RabbitMQ, VMware


More information about the rabbitmq-discuss mailing list