4

I've noticed that very simple distributed transactions take a good amount of time (3-4s) to complete on a first run. But if the same transaction scope is called again, it's much faster (30ms). It seems like MSDTC sort of goes to sleep after an hour. After the hour has passed, the next transaction to run will take 3-4s.

I don't expect much traffic on the site, so it's likely that many hours could pass between individual transactions.

I thought possibly this was due to the MSDTC service being set to start manually, but I've made sure that the MSDTC services are both running automatically.

Guessing there's a registry setting somewhere, but I had no luck finding anything in MSDN.

Thank you!

2 Answers2

2

MSDTC runs COM components to handle transactions and after 20 minutes (I believe the default) the components are unloaded from memory. The slow down you are seeing on the first transaction is the environment spinning up and loading things into memory.

kemiller2002
  • 113,795
  • 27
  • 197
  • 251
1

I came across this question today, and I know the question is kind of old, but I was researching a similar thing and came across this:

http://support.microsoft.com/kb/197810

This KB is also old, but it looks to me that there's something around idle connections being closed. It also lists registry settings. I'm not sure if this helps, but my scenarios are quite different so this is not an issue (if this indeed is the issue), I just wanted to know what was going on.

I am not quite sure that MSDTC runs as a COM+ component. There is COM interface to it, but I could not find anywhere any mention of it being a COM+ component. It is listed as a service and COM interface can be bypassed so MSDTC could be accessed directly. With all that I really doubt it is a COM+ component. Having said that - it has several other dependencies - like RPC mapper I think, they also might have a part in this problem.

Mihailo
  • 754
  • 3
  • 6