In Microsoft BizTalk Server 2004 or in Microsoft BizTalk Server 2006, you may notice that the SOAP requests or the Web Services Enhancements (WSE) requests time out. In BizTalk Server 2004, you may also see the following messages in the Application log in Event Viewer.
Message 1
Event Type: Warning
Event Source:
BizTalk Server 2004
Event Category: BizTalk Server 2004
Event ID:
5740
Computer: ComputerName
Description:
The adapter "WSE" raised an error message. Details "The timeout period expired
before the response message was received. To avoid this, increase the timeout
on the Web client.".
Message 2
Event Type: Error
Event Source: BizTalk
Server 2004
Event Category: (1)
Event ID: 5749
Computer:
ComputerName
Description: A request-response
for the "SOAP" adapter at receive location
"http:/url/xxxx/xxxxxx.asmx" has timed out before a
response could be delivered.
In BizTalk Server 2006, you may also see the following messages in the Application log in Event Viewer.
Message 1
Event Type: Error
Event Source: BizTalk
Server 2006
Event Category: (1)
Event ID: 5749
Computer:
ComputerName
Description: A request-response for
the "SOAP" adapter at receive location "/WebServer/WebService.asmx" has timed
out before a response could be delivered.
Message 2
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: (1)
Event ID:
5749
Computer: ComputerName
Description: A
request-response for the "WSE" adapter at receive location
"/WebServer/WebService.ashx" has timed out before a response could be
delivered.
Note This issue occurs when the server is under heavy load.
The following workarounds are meant to reduce the timeout warnings and may not eliminate the issue. We strongly suggest that you test these modifications in a nonproduction environment. To work around this issue, use one of the following workarounds.
Workaround 1
To minimize the SOAP time-outs when you call a Web service from a BizTalk Server orchestration, specify
the
clientconnectiontimeout property for the SOAP port as an expression. For example, run the following expression:
MyMessage(SOAP.ClientConnectionTimeout) = 300000;
Note When you set the
SOAP.ClientConnectionTimeout property, you specify the value in milliseconds. The default
value is 90000 (90 seconds) in a static SOAP send port. When you use dynamic send ports, the context properties for a message are set to NULL. To set this value on a dynamic SOAP send port, you must also use it together with the context properties such as
BTS.Retrycount and
BTS.Retryinterval.
For more information about BizTalk Server 2004 and Web
services, visit the following Microsoft Developer Network (MSDN) Web sites:
Workaround 2
To minimize the time-outs when you use
a SOAP send adapter or a WSE send adapter, modify the configuration settings in the Machine.config file. This workaround is called tuning the ASP.NET application performance. To
do this, follow these steps:
- Open the Machine.config file in a text editor, such as
Notepad.
Note The Machine.config file is located in the
%SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\
directory. %VersionNumber% is the version number of
the Microsoft .NET Framework that you installed on the server. - In the Machine.config file, apply the following changes to
the configuration settings that are related to ASP.NET thread pool attributes :
- Set the maxconnection setting to 12 * # of CPUs.
- Set the maxIoThreads setting to 100.
- Set the maxWorkerThreads setting to 100.
- Set the minFreeThreads setting to 88 * # of CPUs.
- Set the minLocalRequestFreeThreads setting to 76 * # of CPUs.
Notes- These values are only a guideline for
reducing contention. For more information about how to determine the values, see the "More information" section.
- The value set for MaxIothreads and MaxWorkerThreads are implicitly multiplied by the number of CPUs on the server.
Therefore, setting the value of maxIoThreads and maxWorkerThreads to 100 would result in a value of 400 on a server that has 4 CPUs.
- These settings can be set whether you are
running the .NET Framework 1.1 or the .NET Framework 2.0.
- With the .NET Framework 2.0, you can set autoconfig=true to automatically configure these settings to achieve optimal performance for BizTalk Server 2006 and BizTalk Server 2006 R2. For more information about autoconfig and these settings, visit the following MSDN Web site:
For more information about tuning ASP.NET application
performance and settings, visit the following MSDN Web site:
There are several options for tuning .NET Framework
applications, most of which involve tuning the settings in the Machine.config file. This
configuration file has many sections. However, the
httpRuntime section is most
important to performance. The
httpRuntime element configures the ASP.NET runtime settings. You can specify
the following attributes at the computer, site, application, and subdirectory
levels:
- ExecutionTimeout
- minLocalRequestFreeThreads
- appRequestQueueLimit
The default settings from the Machine.config file are as follows.
<httpRuntime executionTimeout="90" maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100"
enableVersionHeader="true"/>
For a detailed description of each attribute, visit the following
MSDN Web site:
For more information about performance related issues in BizTalk Server, click the following article number to view the article in the Microsoft Knowledge Base:
821268Â
(http://kbalertz.com/Feedback.aspx?kbNumber=821268/
)
Contention, poor performance, and deadlocks when you make Web service requests from ASP.NET applications
900455Â
(http://kbalertz.com/Feedback.aspx?kbNumber=900455/
)
The number of running orchestrations increases and then remains constant after you reach the thread pool limit, and orchestration execution time may increase in BizTalk Server
886966Â
(http://kbalertz.com/Feedback.aspx?kbNumber=886966/
)
FIX: Slow
performance on startup when you process a high volume of messages through the
SOAP adapter in BizTalk Server
For more information about the
connectionManagement element
setting, visit the following MSDN Web site:
For more information about the
processModel element setting,
visit the following MSDN Web site: