BizTalk Server 2010: Host Throttling

BizTalk Server 2010: Host Throttling



BizTalk host throttling and host threshold, is a scary topic. It is vital to know these settings if you are working with BizTalk. Knowing the uses of BizTalk and host settings can simply improve and change how BizTalk acts when it comes to publishing and delivering messages.

How host throttling affects BizTalk

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.

Watch a video about throttling in real life

Resource-based throttling

Name

Description

 


Per CPU Setting


- Threads

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.

Memory Usage


- 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.

Spool multiplier

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

Severity

Memory

Controls the severity when a process memory threshold is reached.

DB Size

Controls the severity when a db size threshold is reached.

In-flight message

Controls the reaction time of an throttling when the in-process message count exceeds the threshold

Rate-based throttling



Name

Description

Publishing


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

The maximum delay imposed from message publishing throttling. 0 indicates that the throttling is disabled.

 

Throttling override

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

Delivery

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 delivered

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

The maximum delay imposed from message delivery throttling. 0 indicates that the throttling is disabled.

Throttling override

Can be changed to disable or activate automatic throttling

Throttling override severity

Changing this value will increase or decrease the severity of outbound host throttling


Orchestration throttling

Name

Description

Dehydration behavior

 

Control the dehydration behavior of the XLANG engine

Time based

- Maximum Threshold

 

Maximum idle time for an orchestration before it is sent to dehydration

-

Minimum Threshold

 

 

Minimum idle time for an orchestration before it can be sent to dehydration

Subscriptions

- 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

Resources

Video: Understanding BizTalk throttling by Saravana Kumar - BizTalk360

References

BizTalk Admin deep dive course

See Also

Read suggested related topics:

Another important place to find a huge amount of BizTalk related articles is the TechNet Wiki itself. The best entry point is BizTalk Server Resources on the TechNet Wiki.
Sort by: Published Date | Most Recent | Most Useful
Comments
  • Excellent article. Clearly explains throttling.

  • Thank you Steef-Jan! hopefully it will enlighten others to know more about these awsome features in BizTalk!

  • Great work Tord, hope users will benefit from this video "Understand BizTalk server Host throttling - Throttling Part1" http://vimeo.com/35618387

  • I added your link Saravana as a resource, nice one!

  • Great depth and variety in addressing throttling! I nominated it to be featured. Thanks!

  • Very well done Tord!

  • Thank you very much this really helps.