BizTalk generates an Event ID 5649 and complains "The receive location is shutting down"

If you are using File receive locations and BizTalk starts generating events like:

Event Type: Error
Event Source: BizTalk Server 2006
Event Category: (1)
Event ID: 5649
Date: Date
Time: Time
User: N/A
Computer: ComputerName
Description:
The receive location "FileReceive" with URL "\\ServerName\FileDrop\FileName.FileNameExtension" is shutting down. Details:"The FILE receive location \\ServerName\FileDrop\FileName.FileNameExtension exhausted the network retry attempts. ".

then you probably need to tweak some registry values.

The BizTalk-specific KB article is:

File receive locations are disabled or shut down on a computer that is running BizTalk Server 2004 or BizTalk Server 2006

which recommends to 

"...increase the MaxCmds and MaxMpxCt registry values on the BizTalk Server computer and on the remote UNC Share computer."

The emphasis on the "and" is mine to highlight that the values have no effect if made just on the BizTalk Server computer. 

The BizTalk KB recommends further reading:

The network BIOS command limit has been reached" error message in Windows Server 2003, in Windows XP, and in Windows 2000 Server  

This KB article shows that the MaxCmds registry value is created in the LanManWorkstation branch and so is a CLIENT setting:  

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters

Similarly, the MaxMpxCt registry value is created in the LanManServer branch, a SERVER setting: 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters 

What happens is that the client (the BizTalk server with the File receive function) compares its MaxCmds value with the MaxMpxCt value from the server (the file server) and the lower value is selected. If a value is not specified in the registry then the default will be used, which explains why changing just one side of the client/server pair makes no difference to the problem. You can track the number of active requests in Performance Monitor using the "SMB Redirector \ Current Commands" counter.

 

Further reading can be found here:

MaxMpxCt and MaxCmds limits in Windows 2000 

which mentions the danger of raising the number too high and potentially exhausting page pool memory.

The above article also advises that it may be necessary to change the MaxWorkItems registry value, which is discussed in more detail here:.

Terminal Server Client Connections and Logon Limited by MaxWorkItem and MaxMpxCt Values

“To resolve this issue, you must … add the following registry entries for both MaxWorkItems and MaxMpxCt to the servers from which the clients are requesting resources.”

"Note: These values must be added with such a ratio that the value for MaxWorkItems is at least four times as large as that for MaxMpxCt. For example, if MaxMpxCt has a value of 1024, then MaxWorkItems needs to have a value of at least 4096."

 So, in summary:

  • Calculate what MaxCmds and MaxMpxCt need to be
  • Calculate MaxWorkItems based on the new MaxMpxCt value
  • Add MaxCmds to the BizTalk server (and the file server if necessary)
  • Add MaxMpxCt and MaxWorkItems to the file server (and the BizTalk server if necessary)
  • Monitor active requests with Performance Monitor 
  • Monitor available paged pool memory

[[Thanks to Niklas Engfelt]]