【发布时间】:2011-09-14 16:17:49
【问题描述】:
大家好。
首先,请原谅以下描述中的任何英语错误,因为,我不是母语人士,而且我不能完美地写出来。
我正在尝试创建一个 .NET (4.0) 服务,用于远程/事务性/异步接收来自多个队列的可恢复消息。因此,首先,我使用 BeginPeek 方法,然后在 TransactionScope 中使用 Receive 方法(隐式使用 MSDTC)。
问题是运行我的服务的主机 (win7/2k8r2 sp1) 的 mqsvc.exe,它什么都不做(当然与消息的接收/托管无关,MSMQ 是空的且干净的)。 mqsvc.exe 内存分配增长,它从不释放任何内存。所有关于缓存清理间隔的 MSMQ 注册表项都有一个较短的时间值(大约 1 分钟)。
我尝试了几个选项:
- 具有本地和远程 MSDTC(显然是消息主机的远程)。
- 使用 COM 库 mqoa.dll 而不是 .NET 来为 MSMQ 使用显式 MSDTC 事务。
- 使用多台不同的机器(所有 win7/2k8r2 sp1)。
在执行我的服务时没有例外,我可以关闭或/和处置的所有资源都会尽快关闭/处置。我的服务的内存分配是稳定的。
在所有情况下,都是同一个问题。如何解决?
提前致谢。
文森特。
【问题讨论】:
标签: memory msmq msdtc distributed-transactions