Removing the SOAP and HTTP BizTalk Adapter Bottleneck

This is another classic BizTalk performance bottleneck.  Beleive it or not by default the SOAP and HTTP adapters are limited to only two concurrent connections.  This has the net effect of throttling all BizTalk solutions sending messages via the SOAP and HTTP adapters.  A quick and easy way to improve BizTalk performance is to up the number of concurrent connections.  Add the following to your BTSNTSvc.exe.config which can be found under your BizTalk installation directory.
 
<configuration>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="10" />
    </connectionManagement>
  </system.net>
</configuration>
 
Be sure not to set the maxconnection attribute to a number that will allow BizTalk to flood the web server.  The web servers capacity can be determined by using tools such as WCAT and performing analysis and load testing on a test environment.  Note that maxconnections can be set for a specific address.  See below example for allowing 50 concurrent connections to www.MichaelArnett.com and default anything else to 10 connections.
 
<configuration>
  <system.net>
    <connectionManagement>
      <add address="www.MichaelArnett.com" maxconnection="50" />
      <add address="*" maxconnection="10" />
    </connectionManagement>
  </system.net>
</configuration>
 
So why is it so?  Basically BizTalk Server along with it’s adapters has naturally been developed with the .NET framework and runs on the CLR.  This being the case BizTalk is subordinate to rules and restrictions imposed on it by the .NET framework just as with any other .NET application.  The settings of two concurrent users conforms to the IETF RFC for the HTTP 1.1 specification and is applicable for user scenarios.  For example Internet Explorer also being built on .NET would be subordinate to this rule only allowing two items to be downloaded from any one website at a time.  This is totally useless for a low latency high throughput scenario and the above configuration settings should be implemented for BizTalk Server to remove this bottleneck.
 
The recommended safe value for maxconnection is (12*N) where N is the number of CPUs on the web server running the web application.  So if we are calling a web service on www.MichaelArnett.com and that web server has two CPUs then it’s safe to start at <add address="www.MichaelArnett.com" maxconnection="24" />
Advertisements
This entry was posted in BizTalk Server. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s