If you having been using MSMQ for several years, you should've definitely encountered "Insufficient resource"(MQ_ERROR_INSUFFICIENT_RESOURCES) issue especially when MSMQ is part of enterprise system. As MSMQ is borned to enable the applications running on separate servers/processes to communicate in a failsafe manner, the inconsistency of sending application against receiving side could make the mesages accumulate in MSMQ which in turn boom the MSMQ storage. Most of this kind of issue can be pinpointed by performing the following troubleshooting steps, so I believe the troubleshooting methodology deserves sharing with you guys.
1. In the event log, you are supposed to see the following related error:
Event Type: Error
Event Source: MSMQ
Event Category: Devices
Event ID: 2017
Date: 10/4/2005
Time: 2:07:48 PM
User: N/A
Computer: SGTS01
Description:
Unable to initialize the Message Queuing service.
2. At the same time, the msmq log will have the following entry:
0x18b8> Tue Oct 04 14:07:48 2005: QM Error: main/1030, HR: 0xc000009a
0x18b8> Tue Oct 04 14:07:48 2005: QM Error: main/1090, BOOL: 0
0x18b8> Tue Oct 04 14:07:48 2005: QM Error: main/1202, BOOL: 0
0xc000009a means STATUS_INSUFFICIENT_RESOURCES.
3. If you have tmq tool, you can check the “tmq state” result:
Pools limitations (calculated approximately, in KB
Paged : limit 307,200 used for 43 %
Nonpaged : limit 262,144 used for 12 %
The current paged pool usage is 307MB*43% = 132MB. Almost 80% of the maximum paged pool usage(around 163M).
Therefore, the customer should have encountered the MSMQ paged pool issue of following KB:
810507 MSMQ: Error 0xc00e0027 When You Send or Receive a Microsoft Message
<http://support.microsoft.com/?id=810507>
811308 MSMQ: How to Increase the Kernel Memory Threshold
<http://support.microsoft.com/?id=811308>
Solution:
1. Remove /3GB switch in boot.ini if you have.
2. Modify following registry key(if doesn’t exist, add it manually)
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Session Manager/Memory Management/PoolUsageMaximum = 60
HKEY_LOCAL_MACHINE/Software/Microsoft/MSMQ/Parameters/KernelMemThreshold (DWORD) = 95 (0x5F)
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management/PagedPoolSize (DWORD) = 0xFFFFFFFF
3. Restart the machine to release the paged pool.
Best regards,
Yawei