我注意到,非常简单的分布式事务需要花费大量时间(3-4s)才能在第一次运行时完成。但是如果再次调用相同的事务范围,它会更快(30ms)。似乎MSDTC在一小时后就会进入睡眠状态。小时过后,下一个要运行的交易将花费3-4s。
我不希望网站上有太多流量,因此很可能在个别交易之间可以传递许多小时。
我想这可能是因为MSDTC服务被设置为手动启动,但我确保MSDTC服务都自动运行。
猜测某处有注册表设置,但我没有在MSDN中找到任何内容。
谢谢!
答案 0 :(得分:2)
MSDTC运行COM组件来处理事务,在20分钟后(我相信默认值),组件从内存中卸载。您在第一个事务中看到的减速是环境旋转并将内容加载到内存中。
答案 1 :(得分:1)
我今天遇到了这个问题,我知道这个问题有点陈旧,但我正在研究类似的事情,并且遇到了这个问题:
http://support.microsoft.com/kb/197810
这个KB也很老了,但是在我看来,关闭空闲连接的东西。它还列出了注册表设置。我不确定这是否有帮助,但我的情况完全不同,所以这不是问题(如果这确实是问题),我只是想知道发生了什么。
我不太确定MSDTC是否作为COM +组件运行。它有COM接口,但在任何地方都没有提到它是COM +组件。它被列为服务,可以绕过COM接口,因此可以直接访问MSDTC。尽管如此,我真的怀疑它是一个COM +组件。话虽如此 - 它还有其他一些依赖项 - 比如RPC mapper,我认为它们也可能在这个问题上有所作为。