MSMQ:从队列接收时,什么可能导致“资源不足以执行操作”错误?

时间:2009-11-13 23:19:27

标签: msmq

MSMQ:从队列接收时会导致“资源不足以执行操作”的错误是什么?

当队列只保留2,000条消息时,每条消息的大小约为5KB。

6 个答案:

答案 0 :(得分:35)

我有相同的错误消息,解决方案很简单。

有许多消息存在于各种队列中,并且已达到存储限制。我去了:

  
      
  • 服务器管理器 - >功能

  •   
  • 右键点击消息队列

  •   
  • 所选属性

  •   
  • 在“常规”标签中取消勾选存储限制

  •   

我被告知使用 MSMQ 的服务将重新启动,然后错误就消失了。

答案 1 :(得分:29)

来自John Breakwell的博客有十一种可能性:

  1. 远程读取的线程池已用尽(仅限MSMQ 2.0)。
  2. 超出了本地回调线程数
  3. 已超出邮件量 系统可以处理什么(MSMQ 2.0 只)。
  4. Paged-pool内核内存是 耗尽。
  5. 不匹配的二进制文件。
  6. 邮件大小太大。
  7. 已超出机器配额。
  8. 打开时的路由问题 事务性外部队列(MSMQ 仅限3.0)
  9. 缺少磁盘空间。
  10. 移动设备上的存储问题
  11. 群集太多MSMQ资源
  12. 打开连接太多
  13. 计算机名称超过15个字符
  14. 死信队列中的邮件太多
  15. http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/761035.aspx

    我会检查队列的版本以及错误时打开的队列的连接数(往返)。任何“可能有”都会导致您的错误。

答案 2 :(得分:16)

我的传出队列中有太多失败的消息。 检查系统队列 - >死信的消息。我清除了这个队列,它再次正常工作。

答案 3 :(得分:1)

我遇到了同样的错误,在检查了上面提到的内容后,原来是引起问题的计算机名称!它超过了15个字符,我将其更改为较短的字符后,问题就解决了。

答案 4 :(得分:1)

如果启用了日记功能,则将存储从队列中删除的所有邮件的副本,因此也可能达到MSMQ日记限制。短期修复可能是清除队列的日志,而长期而言-禁用日志记录。

答案 5 :(得分:0)

对我来说,问题不是托管队列的计算机。是将消息发送到队列的机器。我注意到源计算机上的“传出队列”显示了大量消息,这导致我进入MSMQ Messages Are Stuck In The Outgoing Queue。对我来说,在源计算机上重新安装MSMQ可以解决此问题。