Biztalk 2004 Integration Experiences

Friday, July 22, 2005

Biztalk Server 2006 Beta Program

Looks like Microsoft has started the Biztalk Server 2006 Beta Program.
Check out Stephen's blog for more information.

Friday, July 08, 2005

Biztalk 2004 Stress/Load Testing - Do it Early

In one of my current projects I started doing load testing and was literally shocked with the initial performance results. The application which I was testing was a simple B2B application migrated from Biztalk 2000. It has few huge schemas, couple of maps, bunch of Legacy COM components invoked in an Orchestration

When we submitted around 50 concurrent requests, the Biztalk host service which was processing the Orchestrations got bounced, these orchestrations were stuck in the middle and did not continue processing when Biztalk Host Service was restarted automatically. I also noticed the Biztalk Host started getting bounced continuously after few mins when this happened. On more research, I found that the Biztalk Host Service was getting out of memory and hence got bounced.

Also it looks like Biztalk 2004 is by default tuned to handle a lot of messages and might not be suitable to everyone based on the size of message, schemas or maps. If you have huge orchestrations or large maps, you certainly might have to follow the instructions on the Biztalk Performance Whitepaper posted in MSDN and Biztalk Performance Blog.

I followed the following recommendations to make my server handling requests with reasonable memory & CPU usage I could handle 2000 transactions without a glitch.


1. I used SvcClassSettings tool to modify the following setting for Messaging InProcess & Messaging Isolated

LowWatermark = 40
HighWatermark = 80


2. I also did the following Registry changes (refer the performance
characteristics white paper for functional descriptions on these registry
keys)

HKEY_LOCAL_MACHINE\
SYSTEM\CurrentControlSet\Services\BTSSvc*

Created a new DWORD key named MessagingThreadPoolSize and set the value to 5

HKEY_LOCAL_MACHINE\
SYSTEM\CurrentControlSet\Services\BTSSvc.3.0
HKEY_LOCAL_MACHINE\

SYSTEM\CurrentControlSet\Services\BTSSvc*

Created a new DWORD key named MessagingThreadsPerCpu and set the value to 10
(* is the guid created for each host)

3. I created different host for different adapters and functional orchestrations

For ex:

filehost - for all file receive processes
httpSynchost- for all http sync receive processes
defaultXlanghost - for most my orchestrations
commonXlanghost - for common orchestrations called by partner specific orchestrations

4. Also I had some legacy COM components which were written in VB and used with Biztalk 2004 Orchestration using Interop. I had to place these dll's in COM+

The lesson I learnt from this exercise is to do performance testing in the early stages of Development to avoid delays with the project.