2

MSDN 线程

大家好。

首先,请原谅以下描述中的任何英语错误,因为,我不是母语人士,而且我不能完美地写出来。

我正在尝试创建一个 .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)。

在执行我的服务时没有例外,我可以关闭或/和处置的所有资源都尽快关闭/处置。我的服务的内存分配是稳定的。

在所有情况下,这都是同一个问题。如何解决?

提前致谢。

文森特。

4

2 回答 2

1

在 MSDN 上解决了问题。

MSDN 线程

于 2011-08-12T10:19:50.160 回答
0

以下修补程序解决了此问题:

当您对 Windows 7 或 Windows Server 2008 R2 中的消息队列 5.0 队列执行远程事务读取时,消息队列服务的内存使用率很高

于 2012-07-18T15:47:18.330 回答