Recently one of my colleagues asked me if it is possible to restrict the number of active instance of orchestration.

I was aware of singleton pattern, but the limitation with it is only one instance at any time.

I tried to figure out at MSDN, and  able to understand  in one way we can achieve it through singleton but not completely

http://msdn.microsoft.com/en-us/library/bb418739(v=bts.10).aspx

I tried to figure out if there is any possible way to achieve it and came to know that BizTalk has no built-in mechanism for controlling the number of instances of a given orchestration.. BizTalk engine does its own throttling to maximize system throughput.

As this was high level abstraction, I thought of digging more and able to collect few things, which i would like to share.

Out of the box with some default performance tuning settings describe the actual way of controlling the whole mechanism. We can figure it out these in the adm_serviceclass table of BizTalkMgmtDb. you might need to adjust these during your performance tuning. But be careful before touching these settings.

There are many keys but few key properties are listed below.

Name

Low Watermark

High Watermark

Low Sessionmark

High Sessionmark

XLANG/s (Orchestrations)

100

200

5

10

Messaging InProcess (InProcess Adapters)

100

200

2

5

MSMQT

100

200

10

15

Messaging Isolated (Isolated Adapters)

100

200

2

5

Low Watermark & High Watermark--à Low and high specify how many instances of that service type can execute at any one time. High Watermark points the maximum number of Orchestrations that can be in flight at any one time – once the BizTalk engine hits this watermark it will throttle back to the number specified by the Low Watermark and then resume normal operation

Low SessionMark  & High SessionMark---à Low and High Sessionmarks specify the number of concurrent database sessions that can be persisting inbound messages at any one time for each service type.

Do not change these setting, until there is any specific need.

The important thing to remember is that all of these settings are per processor, so if you have a dual processor box then 200 Orchestrations can be in flight at any time, quad processor boxes can have 400 and so on.