Share this

Scaling-out from 1 to 3 MessageBox databases instead of 1 to 2

Scalability is ability of a system, network, or process to handle a growing amount of work in a capable manner or its ability to be enlarged to accommodate that growth. Since BizTalk works on SQL layer, it is very common to find bottlenecks in the MessageBox database during performance and scalability tests of a high volume BizTalk solution when you try to determine the Maximum Sustainable Throughput. These bottlenecks can be: 1.  CPU  - In case of complex orchestration scenarios, the MessageBox database consumes a lot of CPU resources. 2.  Lock Contention -  Complex scenarios with multiple host instances or orchestrations tend to create lock contention on the MessageBox database. 3.  Disk I/O - Disk I/O is a common bottleneck for the MessageBox database. One of the significant optimization step when dealing with scaling the BizTalk Message Box is adding new message boxes even when they are created in the same SQL Instance. But you will need to add three message boxes to achieve the best performance. Why so? Lets consider the 1 SQL server topology with 2 BizTalk Servers Now lets say if CPU processing is a bottleneck, then if you add only one MessageBox database to this topology, the master MessageBox database will still be CPU bound and the secondary MessageBox database will be under-used. If you disable publishing on the master MessageBox database and dedicate the master MessageBox database to do only routing, the secondary MessageBox database will do the publishing. However, this will not increase overall throughput because the secondary MessageBox database is the only publisher and becomes the bottleneck. So, adding 2 secondary MessageBox databases and disabling the publishing on the master MessageBox database is recommended for scaling-out in this scenario. How to add multiple Message Box database in an existing BizTalk group http://blogs.msdn.com/b/biztalknotes/archive/2013/08/06/how-to-add-multiple-message-box-database-in-an-existing-biztalk-group.aspx Resource: https://msdn.microsoft.com/en-us/library/cc296848(v=bts.10).aspx http://social.technet.microsoft.com/wiki/contents/articles/3253.multiple-message-boxes-in-biztalk-scale-out-message-box.aspx

Loved this? Spread the word


Gautam

Follow me here

About the Author

My name is Gyanendra Kumar Gautam. I am Solution Consultant, who basically works to hook the stuff together using Microsoft technologies like Azure PaaS, Azure Serverless Services, Microsoft BizTalk Server, and Azure DevOps Services.

You may also like

The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security.

Yesterday this error came for one of the deployment on production. But the same deployment was working fine on staging environment. A message received by adapter “MSMQ” on receive location “RL_XYZ_RES_09” with URI “FORMATNAME:DIRECT=OS:.\PRIVATE$\XYZ_RES_09” is suspended. Error details: There was a failure executing the receive pipeline: “BTSHttpDecoder.DecoderPipeline, BTSHttpDecoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5793a821957af7d1” Source: “MessageDecoderPipelineComponent_F09” Receive Port:

Read More

BizTalk Project Template is missing in Visual Studio 2012

I ran couple of times into this issue so thought of documenting it here. So first of all development of BizTalk Server 2013 application is only supported on Visual Studio 2012. In short, to get BizTalk Project Template do the following steps: Install Visual Studio 2012 Install SQLServer2012 or SQLServer2008R2 SP1 Install BizTalk Server 2013  – Select (mark

Read More

There is no value associated with the property ‘BTS.MessageID’ in the message.

In the following orchestration (This is the HelloWorld sample application at C:\Program Files (x86)\Microsoft BizTalk Server 2013\SDK\Samples\Orchestrations\HelloWorld\)     Inside the message assignment shape I have added the following code. System.Diagnostics.EventLog.WriteEntry(“HelloWorld”,InvoiceMessage(BTS.MessageID)); Now when I deploy and test the HelloWorld application, I get the following error xlang/s engine event log entry: Uncaught exception (see the ‘inner exception’ below)

Read More

Never miss a good story!

 Subscribe to my blog to keep up with the latest news!