The Upper Limit Number of Applications in BizTalk

Published On: Jun 2, 2010

So we had an instance today where we wanted to know if BizTalk would be capable of handling a large number of applications. So we decided to run a small test that would allow us to see how the system holds up under these circumstances. Note that we know that this was not a conclusive test, but was instead designed to see if there was a preprogrammed upper limit. The environment that we were using was a virtual machine, with 8 cores and 2gb of ram, with that we were able to get the number up over 1024 applications without BizTalk showing any issues. With that said we didn't have any ports, orchestrations, or schema's installed in the applications. So this is solely about the number applications. The next step is to make the multi-threaded version of the app for adding it to the server so that I can go over the 1024 without having to wait for the hour and a half.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
 
namespace ApplicationAdder
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isAdd = false;
            int length = 1024;
 
            for (int i = 0; i < length; i++)
            {
                if (isAdd)
                {
                    ExecuteCommand(@"BTSTask AddApp -ApplicationName:SampleAppNumber" + i, 300000);
                }
                else
                {
                    ExecuteCommand(@"BTSTask RemoveApp -ApplicationName:SampleAppNumber" + i, 300000);
                }
            }
 
        }
 
        public static int ExecuteCommand(string Command, int Timeout)
        {
            int ExitCode;
            ProcessStartInfo ProcessInfo;
            Process Process;
 
            ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + Command);
            ProcessInfo.CreateNoWindow = true;
            ProcessInfo.UseShellExecute = false;
            Process = Process.Start(ProcessInfo);
            Process.WaitForExit(Timeout);
            ExitCode = Process.ExitCode;
            Process.Close();
 
            return ExitCode;
        }
    }
}

Update: It appears that BTSTask.exe doesn't handle multi-threading very well so this will have to stand in the event that someone decides to run this test any further I would really like to hear the results.

Comments