The BizTalk Server host throttling mechanism continually monitors for a throttling condition, calculates the severity of the throttling condition, and applies host throttling progressively depending on the calculated severity. The throttling mechanism is self tuning and the default configuration options are suitable for the majority of BizTalk Server processing scenarios. BizTalk Server host throttling exposes several configurable options that can be used to tune throttling for specific scenarios. For information about changing these configuration options, see How to Modify the Default Host Throttling Settings.
BizTalk Server uses the following algorithm when applying host throttling:
There are three primary types of throttling conditions: rate based, resource based, and user controlled.
This section describes the triggers for various throttling conditions, the resultant actions by the throttling mechanism, and techniques that may be employed to mitigate the throttling condition.
The BizTalk throttling mechanism applies inbound throttling to the orchestration engine (XLANG) and to inbound adapters.
Use the Message publishing throttling state and Message publishing throttling state duration counters associated with BizTalk:MessageAgent performance object category to measure the current throttling state and duration of throttling. For more information about the available host throttling performance counters, see Host Throttling Performance Counters.
Inbound throttling can cause inbound messages to backlog at the source. If inbound throttling is applied to a receive adapter then the receive adapter may stop receiving messages until the throttling condition is mitigated.
2
Message publishing incoming rate for the host instance exceeds the Message publishing outgoing rate * the specified Rate overdrive factor (percent) value. The database cannot keep up with the publishing rate.
Block the publishing thread for a dynamically computed time period until the Message Publishing Incoming Rate is at par with the Message Publishing Outgoing Rate * the specified Rate overdrive factor (percent) value.
Use performance counters to determine the message publishing incoming and message publishing outgoing rate. Consider an appropriate overdrive factor for your environment.
Verify that the values supplied for the Sampling window duration (milliseconds) and Minimum number of samples parameters are appropriate for your scenario. For more information about these parameters see How to Modify the Default Host Throttling Settings.
BizTalk:MessageAgent
Message publishing incoming rate
Message publishing outgoing rate
4
Process memory exceeds the specified threshold.
This can occur if the batch to be published has steep memory requirements or too many threads are processing messages
Reduce the size of the thread pool used by EPM.
Block the EPM threads to prevent processing of new messages batches.
If there is a steep memory requirement to persist the messages in a batch to the database, the publishing thread is also subject to a progressive delay before the messages are persisted to the database.
Whether the publishing batch will be blocked or not due to process memory pressure depends on several factors including the number of messages in the batch or if there are dehydration or message deletion commands in the batch.
Consider reducing the amount of load by reducing the EPM thread pool, and/or the size of adapter batches.
If the process is not consuming excessive memory, consider increasing the Process memory usage threshold for the host. For more information about changing the Process memory usage threshold see How to Modify the Default Host Throttling Settings.
High process memory
Process memory usage (MB)
Process memory usage threshold (MB)
6
Host message queue size, the spool table size or the tracking table size exceed the specified threshold.
Possible reasons for this condition include:
The publishing thread is also subject to a progressive delay before the messages are persisted to the database.
Ensure that the SQL Agent jobs used by BizTalk Server to maintain the BizTalk Server databases are running and are not failing.
Terminate and resume suspended instances as needed.
Increase the default value for the Message count in database threshold taking into consideration the space requirements of the SQL server that houses the BizTalk databases.
If your database is sized appropriately to handle additional message backlog, consider increasing the ThrottlingSpoolMultiplier and ThrottlingTrackingDataMultiplier registry values to allow additional backlog in the Spool and Tracking tables. For more information about changing the values see How to Modify the Default Host Throttling Settings.
BizTalk:Message Box:General Counters
BizTalk:Message Box:Host Counters
MessageAgent /Database size
Message Box:General Counters /Spool size
Message Box:General Counters /Tracking data size
Message Box:Host Counters/Host queue – length
Message Box:Host Counters/Host queue - suspended msgs – length
8
Database sessions being used by the host instance exceed the specified threshold.
Consider increasing the Database connections per CPU threshold for the host. For more information on changing this value see How to Modify the Default Host Throttling Settings.
Database session
9
Process thread count exceeds the specified threshold.
Consider adjusting the different thread pool sizes to ensure that the system does not create a large number of threads. For more information about modifying the thread pool sizes see How to Modify the Default Host Throttling Settings.
Thread count
Thread count threshold
5
System memory exceeds the specified threshold.
Consider reducing load by reducing the default size of the EPM thread pool, and/or the size of adapter batches.
If the process is not consuming excessive memory, consider increasing the Physical memory usage threshold for the host. For more information on changing the Physical memory usage threshold see How to Modify the Default Host Throttling Settings.
Physical memory usage (MB)
Physical memory usage threshold (MB)
The BizTalk throttling mechanism applies outbound throttling to the orchestration engine (XLANG) and to outbound adapters.
Use the Message delivery throttling state and Message delivery throttling state duration counters associated with BizTalk:MessageAgent performance object category to measure the current throttling state and duration of throttling. For more information about the available host throttling performance counters see Host Throttling Performance Counters.
Outbound throttling can cause delayed message delivery and messages may build up in the in-memory queue and cause de-queue threads to be blocked until the throttling condition is mitigated. When de-queue threads are blocked no additional messages are pulled from the MessageBox into the in-memory queue for outbound delivery.
1
Message delivery incoming rate for the host instance exceeds the Message delivery outgoing rate * the specified Rate overdrive factor (percent) value
This can be caused by high processing complexity, slow outbound adapters, or a momentary shortage of system resources.
Block the delivery thread for a dynamically computed time period until the Message delivery incoming rate is at par with the Message delivery outgoing rate * the specified Rate overdrive factor (percent) value.
Use performance counters to determine the message delivery incoming and message delivery outgoing rate. Consider an appropriate over drive factor for your environment.
Message delivery incoming rate
This can occur in memory intensive processing scenarios, when processing large messages, or when send adapters are attempting to process a high number of messages simultaneously.
Slow down message delivery to adapters or XLANG.
Reduce process memory consumption by dehydrating service instances and shrinking cache when applicable.
Reduce the size of the thread pools used by the EPM and/or the Message Agent.
Periodically force a .NET garbage collection (GC).
If the system is not becoming idle due to process memory based throttling, no action may be required.
If the In-process message count value is high and the CPU utilization is not excessive even when there is process memory based throttling, no additional action may be required.
If the system appears to be over-throttling, consider increasing the value associated with the Process memory usage threshold for the host and verify that the host instance does not generate an "out of memory" error. If an "out of memory" error is raised by increasing the Process memory usage threshold, then consider reducing the values for the Internal message queue size and In-process messages per CPU thresholds. This strategy is particularly relevant in large message processing scenarios.
Process memory usage(MB)
In-process message count
Active instance count
3
Number of in-process messages delivered to a service class exceeds the specified threshold.
Reduce the size of the thread pool used by the Message Agent.
If over-throttling occurs, consider increasing the value associated with the In-process messages per CPU threshold.
In-process message count threshold
Reduce the size of the thread pools used by the EPM and/or the Message Agent
System memory exceeds a threshold.
If the process is not consuming excessive memory, consider increasing the Physical memory usage threshold for the host. For more information about changing the Physical memory usage threshold see How to Modify the Default Host Throttling Settings.
Increase the default value for theMessage count in databasethreshold taking into consideration the space requirements of the SQL server that houses the BizTalk databases.
If your database is sized appropriately to handle additional message backlog, consider increasing theThrottlingSpoolMultiplier andThrottlingTrackingDataMultiplierregistry values to allow additional backlog in the Spool and Tracking tables. For more information about changing the values see How to Modify the Default Host Throttling Settings.
What do these numbers represent? 1, 100, 1000, etc? Are there some whitepapers/additional msdn documetation that explains the relationship and what those numbers really mean?