activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Bish <tabish...@gmail.com>
Subject Re: Apache.NMS.ActiveMQ Threads (C#)
Date Fri, 27 Nov 2015 21:57:44 GMT
On 11/27/2015 03:29 PM, megakid wrote:
> Hi all,
>
> I'm doing a deep dive debugging exercise on Apache.NMS.ActiveMQ 1.7.1 at the
> moment and struggling!  We recently saw one of our new services in the wild
> with over 300 threads named as "ActiveMQ Task" with
> "Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Threads.DedicatedTaskRunner.Run"
> as the top stack frame.  We are trying to establish why the C# NMS library
> has created all these threads.  Some questions...
>
> I cannot find the Apache.NMS.ActiveMQ source code anywhere, only some out of
> date mentions/links - I assume it is not open sourced any more?
>
> I've spent all day trying to reproduce the issue but I can only ever get a
> maximum of 1 thread per session at any point in time (as expected).  I am as
> sure as I can be that we are not creating more than 10 or so sessions over a
> single, global connection (assume that for now) - we call, in short,
> session.CreateConsumer(dest).Listener += [ourHandler]; - in my debugging
> I've established that this creates a thread on CreateConsumer, then throws
> that thread away and is replaced with a new one when the Listener += is
> executed - it doesn't seem to leak anything here.  Are there any other
> scenarios (failure cases etc) where it may leak these threads?
>
> I have looked at the decompiled source to get an indication of when these
> threads are spawned and, ignoring `dedicatedTaskRunner = false` which I know
> is possible, can only see the FailoverTask and the SessionExecutor that uses
> the DedicatedTaskRunner (which creates threads named "ActiveMQ Task").
>
> It is a very busy service so after consulting
> http://activemq.apache.org/how-to-deal-with-large-number-of-threads-in-clients.html
> I thought it might be due to load - but I can't see where any of that code
> can live inside NMS, am I right in thinking that the C# NMS library is
> designed to not have more than 1 thread per session (e.g. I should ignore
> that webpage)?
>
> In case anyone is interested, we are using the Obvs library to connect to
> ActiveMQ - the topic subscription part is here: 
> https://github.com/inter8ection/Obvs.ActiveMQ/blob/master/Obvs.ActiveMQ/MessageSource.cs
>
> Has anyone else had this issue and what did you do to diagnose it?
>
> Thanks very much!
>
>
>
> --
> View this message in context: http://activemq.2283324.n4.nabble.com/Apache-NMS-ActiveMQ-Threads-C-tp4704338.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
Code is here:
http://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk

Happy debugging

-- 
Tim Bish
Sr Software Engineer | RedHat Inc.
tim.bish@redhat.com | www.redhat.com 
twitter: @tabish121
blog: http://timbish.blogspot.com/


Mime
View raw message