4

我注意到非常简单的分布式事务在第一次运行时需要很长时间(3-4 秒)才能完成。但是如果再次调用相同的事务范围,它会快得多(30ms)。似乎 MSDTC 在一小时后进入睡眠状态。一个小时过去后,下一个要运行的事务将需要 3-4 秒。

我预计网站上的流量不会很大,因此单个交易之间可能会经过很多小时。

我认为这可能是由于 MSDTC 服务设置为手动启动,但我确保 MSDTC 服务都自动运行。

猜测某处有一个注册表设置,但我没有在 MSDN 中找到任何东西。

谢谢!

4

2 回答 2

2

MSDTC 运行 COM 组件来处理事务,并在 20 分钟(我相信默认设置)后从内存中卸载组件。您在第一个事务中看到的减速是环境旋转并将事物加载到内存中。

于 2009-05-15T16:15:20.467 回答
1

我今天遇到了这个问题,我知道这个问题有点老了,但我正在研究类似的事情并遇到了这个问题:

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

这个 KB 也很旧,但在我看来,空闲连接周围有一些东西被关闭了。它还列出了注册表设置。我不确定这是否有帮助,但我的情况完全不同,所以这不是问题(如果这确实是问题),我只是想知道发生了什么。

我不太确定 MSDTC 作为 COM+ 组件运行。它有 COM 接口,但我找不到任何提到它是 COM+ 组件的地方。它被列为服务,并且可以绕过 COM 接口,因此可以直接访问 MSDTC。尽管如此,我真的怀疑它是一个 COM+ 组件。话虽如此 - 它还有其他几个依赖项 - 我认为像 RPC 映射器,它们也可能参与这个问题。

于 2013-12-18T10:42:00.633 回答