You can modify the default throttling behavior by creating values under the following key in the BizTalk Server registry:
BizTalk Server checks the values stored in this location of the registry every cache refresh interval, which is set to 60 seconds by default. For information about changing the cache refresh interval see How to Modify Group Properties.
Create the following registry values to modify the default throttling behavior, as described in the following table:
|
Name
|
Type
|
Description
|
Comments
|
|---|
|
ThrottlingPublishOverride
|
DWORD
|
Valid Values are:
0: Do not override
1: Initiate throttling condition
2: Do not throttle
|
The default value is 0 (Do not override)
|
|
ThrottlingDeliveryOverride
|
DWORD
|
Valid Values are:
0: Do not override
1: Initiate throttling condition
2: Do not throttle
|
The default value is 0 (Do not override)
|
|
ThrottlingPublishOverrideSeverity
|
DWORD
|
Valid values are from 1 through 1,000.
|
A higher value increases the severity of an inbound throttling condition initiated when ThrottlingPublishOverride is set to 1.
The default value is 100.
|
|
ThrottlingDeliveryOverrideSeverity
|
DWORD
|
Valid values are from 1 through 1,000.
|
A higher value increases the severity of an outbound throttling condition initiated when ThrottlingDeliveryOverride is set to 1.
The default value is 100.
|
|
AgentThreadPoolSize
|
DWORD
|
Valid values are from 1 through 50.
|
The maximum number of threads (per CPU) that the message agent can allocate to deliver de-queued messages to the XLANG/messaging engine. The message agent has a dynamic thread-pool that shrinks or grows depending on the load. The thread pool always maintains at least 1/10th of the maximum value. For example, if the maximum thread pool size is 20, there will be at least 2 threads allocated even when there is no load.
The default value is 20.
|
|
AgentThreadsPerCpu
|
DWORD
|
Valid values are from 1 through 20.
|
The maximum number of threads per CPU that can compete with each other for CPU time. Since BizTalk is I/O intensive, many threads may be waiting. Nevertheless, this value should be kept low to avoid excessive context switching.
The default value is 2.
|
|
AgentThreadPoolQueueLen
|
DWORD
|
Valid values are from 20 through 1,000.
|
The place holder for work items waiting to be scheduled for a thread. Items waiting in the thread-pool queue consume memory and so this value should be kept low for large message scenarios.
The default value is 50.
|
|
ThrottlingSpoolMultiplier
|
DWORD
|
Valid values are from 0 through 1,000.
|
Specified the factor by which the Message count in database threshold will be multiplied and then compared against the current record count in the spool table to determine whether the system should throttle on spool table size. If this is set to 0, spool table size is not used as a consideration for determining a throttling condition.
The default value is 10.
|
|
ThrottlingTrackingDataMultiplier
|
DWORD
|
Valid values are from 0 through 1,000.
|
Specified the factor by which the Message count in database threshold will be multiplied and then compared against the current record count in the tracking table to determine whether the system should throttle on tracking table size. If this is set to 0, tracking table size is not used as a consideration for determining a throttling condition.
The default value is 10.
|
|
ThrottlingSeverityProcessMemory
|
DWORD
|
Valid values are from 1 through 1,000.
|
Controls the severity of a process memory triggered throttling condition. This is specified in percentage value and this parameter sets the severity of a throttling condition caused when the Process memory usage threshold is exceeded.
The default value is 500.
|
|
ThrottlingSeverityDatabaseSize
|
DWORD
|
Valid values are from 1 through 1,000.
|
Controls the severity of a database sized triggered throttling condition. This is specified in percentage value and this parameter sets the severity of a throttling condition caused when the Message count in database threshold is exceeded.
The default value is 1.
|
|
ThrottlingSeverityInflightMessage
|
DWORD
|
Valid values are from 1 through 1,000.
|
Controls the reaction time of throttling when the In-process size exceeds the threshold. This is specified in percentage value and this parameter sets the severity of a throttling condition caused when the In-process messages per CPU threshold is exceeded.
The default value is 75.
|
|
ThrottlingBatchMemoryThresholdPercent
|
DWORD
|
Valid values are from 0 through 100.
|
Controls the memory threshold beyond which to throttle the publishing of a batch of messages. The batch memory threshold is computed by multiplying this percentage factor by the Process memory usage threshold. If the memory estimated to execute a publishing batch exceeds the batch memory threshold, the batch will be subject to process memory based throttling. Otherwise the batch will be exempt from process memory based throttling even when the total process memory exceeds the Process memory usage threshold. A value of zero indicates that all publishing batches may be subject to process memory based throttling even if the memory estimated to execute the batch is minimal.
The default value is 1.
|
|
ThrottlingLimitToTriggerGC
|
DWORD
|
Valid values are from 50 through 100.
|
Controls when a .NET garbage collection (GC) will be triggered as process memory consumption increases and approaches the threshold. When the memory consumption exceeds this percentage value of the memory threshold, a GC is triggered.
The default value is 80.
|
|
MsgAgentPerfCounterServiceClassID
(String Value)
|
String
|
Valid values are:
{226FC6B9-0416-47A4-A8E8-4721F1DB1A1B} (XLANG)
- or -
{59F295B0-3123-416E-966B-A2C6D65FF8E6} (Messaging)
- or -
{683AEDF1-027D-4006-AE9A-443D1A5746FC} (Messaging Isolated)
|
The default behavior is for the Message Agent to display the performance counters for the most active service class for a given host if multiple service classes are running within the same host instance.
To override the default behavior, specify one of the indicated GUIDS to only display performance counters for that service class.
Note
These GUIDS are mutually exclusive; you can only enter one of these at any given time.
|
It is possible to dynamically control the BizTalk host throttling mechanism by following these steps: