Hosts are generated to perform jobs for BizTalk, processing, delivery and publishing of messages. However BizTalk is delivered with the most common setup when it comes to host throttling. Altering the settings for a host is adopted down to the host instance
and can limit or increase the amount of resources available for the dedicated processes, whatever if it is for delivering (delivery outside of BizTalk) files, publishing (publishing to the BizTalk Message Box database(s)) or processing data in an orchestration
or pipeline. Some of you might never have to touch these settings because the standard settings fits your company and there is no reason for you to create a "high-throughput" or low-throughput with low latency. However for some the host settings are vital
to keep a good control of the BizTalk environment. This article is dedicated to BizTalk 2010.
Per CPU Setting
This will set a threshold for maximum number of threads before BizTalk turns into an automatic throttling state limiting BizTalk to start any new threads for this host instance
until the current thread is within its dedicated threshold. Remember if you have 4 CPU's putting the value 30 here will grant this host instance a total of 120 threads before it runs into a throttling state. Default value is 0, this indicated that there is
no threshold for maximum threads this host can have per CPU per server.
- Database connections
You can also define the maximum number of database session this host instance can have per CPU towards the BizTalk databases. Same when it comes to counting this will indicate
per CPU. So if you have a BizTalk server running 4 CPUs and this setting is set at 20 it will limit your environment to only have a total of 80 database sessions towards the BizTalk database. Crossing this limit will aggregate an automatic throttling state.
- In-Process messages
Changing this setting will limit the in-memory in-flight messages before BizTalk meets a threshold. Then the threshold is reached BizTalk will start automatic throttling to limit
the processing of any new messages.
Internal Message queue size
Set a size limit for the in-memory queue. This queue is a temporary placeholder for messages that are being delivered to a system outside of BizTalk.
Message count in DB
Changing this setting will set a limit for how many instances this host can have in the database before it starts an automatic throttling. The default setting is 50000 instances
in BizTalk. Lowering this can improve a low latency if you experience a huge load of messages running for one specific host.
- Global physical
Changing this setting sets a maximum system wide memory usage before an automatic throttling state begins. Altering this setting will set a maximum usage. However keeping it at
0 is equal to no maximum usage.
- Process virtual
Altering this setting will set the maximum usage of Process Virtual memory, however it is not recommended to run more than 1.5gb of a total. All values over 100 will be looked
at as mb, values below 100 will be committed at percentage.
Sets a limit for the spool size in the MessageBox if you have debatching performed by this host in an orchestration setting a limit here will decrease the usage of the spool table,
slowing down the application so that the spool table can get some time to clean up before you continue with debatching. Default value here is 0, which grants the host no limits regarding the spool size
Tracking data multiplier
Set a limit for the maximum size of the tracking data size limits this BizTalk host to create any new occurrence when the maximum size of the tracking data table has reached a
special size. The default value for this setting is 0 which means that the host will not throttle if the tracking data is beyond recommended size.
Limits to trigger the GC
This sets a limit for the .NET Garbage Collector. So when the memory consumption exceeds this threshold the .NET Garbage collector is triggered
Batch memory threshold
This settings controls the memory threshold values beyond this will trigger a throttling state. Setting this value to zero (1 is default) may send all batching towards throttling
Controls the severity when a process memory threshold is reached.
Controls the severity when a db size threshold is reached.
Controls the reaction time of an throttling when the in-process message count exceeds the threshold
Minimum number of samples
This value is per service class and set to a maximum number of samples used to determine the rate of messages being published
Sampling window duration
Set a time-windows beyond which samples will not be considered
Rate overdrive factor
Percentage factor by which to system will override the input rate
Minimum throttling delay
Can be changed to disable or activate automatic throttling
Throttling override severity
Changing this value will increase or decrease the severity of inbound host throttling
This value is per service class and set to a maximum number of samples used to determine the rate of messages being delivered
The maximum delay imposed from message delivery throttling. 0 indicates that the throttling is disabled.
Changing this value will increase or decrease the severity of outbound host throttling
Control the dehydration behavior of the XLANG engine
- Maximum Threshold
Maximum idle time for an orchestration before it is sent to dehydration
Minimum idle time for an orchestration before it can be sent to dehydration
- Pause at
If any subscribers has a greater or equal value set here then what is waiting to be consumed then the delivery of messages to the subscribing instance is stopped
- Resume at
If any messages was stopped by the “pause at” threshold and now have the assigned amount the messages is resumed and parsed
Video: Understanding BizTalk throttling by Saravana Kumar - BizTalk360
BizTalk Admin deep dive course
Read suggested related topics: