Configuration Parameters that Affect Adapter Performance
This section describes configuration settings that can affect the performance of BizTalk Server adapters.
CLR Hosting thread values for the host
Because a Windows thread is the most basic executable unit available to a Windows process, it is important to allocate enough threads to the .NET thread pool associated with an instance of a BizTalk host to prevent thread starvation. When thread starvation occurs, there are not enough threads available to perform the requested work, which can negatively impact performance. At the same time, care should be taken to prevent allocating more threads to the .NET thread pool associated with a host than is necessary. The allocation of too many threads to the .NET thread pool associated with a host may increase context switching, which can also negatively impact overall performance. Context switching occurs when the Windows kernel switches from running one thread to a different thread and can be an expensive CPU operation.
Modify the number of Windows threads available in the .NET thread pool associated with an instance of a BizTalk host by configuring the appropriate values in the BizTalk Server Settings Dashboard. For more information on modifying the .NET CLR values, see How to Modify .NET CLR Settings.
ASP.NET settings that can impact HTTP or SOAP Adapter performance
The following settings can be applied to an ASP.NET application that hosts a Web application that the HTTP or SOAP adapter communicates with. These parameters are set in the web.config or machine.config files of the server hosting the Web application. Modify these settings to accommodate the load that is generated by your HTTP or SOAP adapter send port. For more information about these settings, see Performance issues when you make calls to web services from an ASP.NET application.
Parameter | Section of configuration file | Default value | Recommended value |
---|---|---|---|
minFreeThreads The minimum number of free threads to allow execution of new requests. ASP.NET keeps this many threads free for requests that require additional threads to complete their processing. |
<httpRuntime> | 8 | 88 * the number of processors on the server hosting the Web application. |
minFreeLocalRequestFreeThreads The minimum number of free threads that ASP.NET keeps available to allow execution of new local requests. This number of threads is kept reserved for requests coming from the local host, in case some requests issue child requests to the local host during their processing. This avoids a possible deadlock with recursive reentry into the Web server. |
<httpRuntime> | 4 | 76 * the number of processors on the server hosting the Web application. |
executionTimeout Indicates the maximum number of seconds that a request is allowed to execute before being automatically shut down by ASP.NET. |
<httpRuntime> | 90 | 90 |
maxconnection Determines how many connections can be made to a specific IP address. |
<connectionManagement> | 2 A value of 2 for this setting conforms to the IETF RFC for the HTTP 1.1 specification and is suitable for user scenarios but is not optimized for high throughput. |
12 * the number of processors on the server hosting the Web application. |
maxWorkerThreads Configures the maximum amount of worker threads to be used for the process on a per-CPU basis. |
<processModel> | 20 | 100 Note: This value is implicitly multiplied by the number of processors on the server. |
minWorkerThreads | <processModel> | 1 | maxWorkerThreads / 2 Note: The minWorkerThreads parameter is not in the configuration file by default. You must add it. Note: This value is implicitly multiplied by the number of processors on the server. |
maxIoThreads Used by ASP.NET to limit the number completion threads used. |
<processModel> | 20 | 100 This value is implicitly multiplied by the number of processors on the server. |
If the computer hosting the Web services is running ASP.NET 2.0 or later, then you can set autoConfig=true in the processModel section of the Machine.config file to automatically configure the following settings to achieve optimal performance based on the machine configuration:
The maxWorkerThreads attribute.
The maxIoThreads attribute.
The minFreeThreads attribute of the httpRuntime element.
The minLocalRequestFreeThreads attribute of the httpRuntime element.
The maxConnection attribute of the <connectionManagement> Element (Network Settings) element.
Note
The processModel section can be set only within the Machine.config file and affects all ASP.NET applications that are running on the server.
For more information about processModel, see ProcessModelSection Class.
Registry setting that governs the TCP window size
The following registry setting governs the TCP window size, which is the amount of receive data (in bytes) that can be buffered during a connection. If this parameter is not set to an optimal value then adapter performance can be impacted negatively. Implement this registry setting to increase the TCP window size.
Warning
If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk. Before you modify the Registry, always back up the registry, and verify that you know how to restore the backup if a problem occurs.
To increase the default TCP windows size, follow these steps:
Click Start, click Run, type regedit.exe, and then click OK to start Registry Editor.
Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
Under the Parameters key, create the following DWORD entry with the indicated value.
DWORD entry Default value Recommended value TcpWindowSize
This setting determines the maximum TCP receive window size of the computer. The receive window specifies the number of bytes a sender can transmit without receiving an acknowledgment. Generally, larger receive windows improve performance over high bandwidth networks.17520 Set to a multiple of the Ethernet Maximum Segment Size (MSS) of 1460 up to a maximum of 64240. If Windows scaling is used, set to a maximum of 65535. Note
You must restart your computer for these changes to take effect.
Close Registry Editor.