HighTechTalks DotNet Forums  

MSMQ Trigger Call to COM+ Component Getting "Stuck"

Dotnet Framework (Component Services) microsoft.public.dotnet.framework.component_services


Discuss MSMQ Trigger Call to COM+ Component Getting "Stuck" in the Dotnet Framework (Component Services) forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
thinkfr33ly@hotmail.com
 
Posts: n/a

Default MSMQ Trigger Call to COM+ Component Getting "Stuck" - 01-02-2008 , 12:29 AM






I'm experiencing a very strange issue in a production environment
under heavy load. It appears as though a COM+ package has object
activations that are getting "stuck". There is no actual processing
taking place (afaict), but the call time for the component just keeps
increasing and the pooling object is never returned to the pool. It
basically appears as though the component is not being freed to return
to the pool.

The basic structure of the application is a COM+ Component written in
C#. This component is activated via an MSMQ Trigger in response to a
message arriving in a message queue.

This application works fine under normal load. Even under somewhat
heavy load, as long as the queue length doesn't get to be more than
the max number of simultaneously pooled objects (20, by default),
things work great. The objects are released back to the pool as they
should be.

If the queue length gets too long, the objects don't seem to be
released as they should. This results in the Call Time for the object
steadily increasing. It does appear that if I leave it long enough, it
fixes itself sometimes... but usually, I'm forced to recycle the COM+
application by executing a "Shut Down" command on the package.

Sometimes this works and things are back to normal, but if the queue
has lots of waiting messages, more often that not things get stuck
again as soon as the first 20 objects are done processing.

Interestingly, it appears to be a degenerative issue. When the
components are working as they should, I'm able to process 40+
messages per second. Over time, as objects get stuck, it decreases to
30, 20, 10, 5, etc. How long this deterioration takes appears to vary.

I am calling ServicedComponent.DisposeObject when I'm done processing
the message, and it's in a finally block to make sure it gets called.

Ideas?

Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.