[rabbitmq-discuss] .NET Client ConnectionFactory threading issues
Chris Haines
cjbhaines at gmail.com
Wed May 1 11:31:11 BST 2013
Hi All,
This had nothing to do with the actual ConnectionFactory. This was because
our application was thread starved.
The .NET ThreadPool by default has a small number of threads available. The
minimum number of available threads was set to 8. This means that once 8
threads have been requested (and still being used) then the ThreadPool
switches over to an algorithm to decide whether to create new threads in
the pool or wait for a thread to become available. This algorithm is not
very generous at creating new threads, so what we were seeing is that the
connections were timing out on creation due to waiting for a thread to
become available, not problems within the RabbitMQ client libraries.
You can get round this by setting the minimum number of threads available
in the ThreadPool, which means that the number specified get created on
your application start up:
ThreadPool.SetMinThreads(minWorkerThreads, minCompletionPortThreads);
Cheers,
Chris
On Thursday, 18 April 2013 12:37:40 UTC+1, Chris Haines wrote:
>
> Hi All,
>
> I have attached a .cs Nunit test fixture to demonstrate a problem I am
> having with the ConnectionFactory. If I create 100 connections in a for
> loop single threaded then I can create them all in about 2 seconds. If I
> create them via a number of threads, in my test I am using 100 threads to
> create a connection on each, then I get a lot of timeout exceptions (my
> test bails out after 60 seconds). I have tried sharing an instance of the
> ConnectionFactory between all threads and also giving each thread its own
> instance but they both have the same result. I have also tried locking
> around the call to CreateConnection but that also didn't help.
>
> I find this behavior to be very strange. Has anyone else had similar
> problems?
>
> Cheers,
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20130501/9a0f033b/attachment.htm>
More information about the rabbitmq-discuss
mailing list