BizTalk process memory throttling

Before going into details of handing BizTalk throttling, I’d like to throw some light on BizTalk throttling. Throttling controls the flow and processing of messages through host instances based on workload and resource utilization. It helps BizTalk hosts to operates at an optimal and moderate level. If the throttling will not manage properly, then it impacts overall performance of BizTalk server.

There are following type of throttling available in BizTalk:

  1. Inbound : It’s also called “message publishing throttling”. The throttling state is indicated by “Message publishing throttling state” performance counter.
  2. Outbound: It’s also called “message delivery throttling”. The throttling state is indicated by “Message delivery throttling state” performance counter. I’ll go more in-depth in my future blog.

Let’s turn to process memory throttling. It indicates that memory being used by BizTalk host process has exceeded the configure limit. The amount of memory used by host process is visible by BizTalk:Message Agent –> Memory usage  (MB) performance counter.

BizTalk host process memory usage throttling is controlled by Host –>properties –>Advanced Tab. Below snapshot depicts memory usage throttling setting for BizTalk host.

image

High process memory throttling can occur if the batch to be published has high memory requirements or too many threads are processing messages. 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.

One can easily detect process memory throttling by “Message publishing throttling state” or  Message delivery throttling state counter value. If state counter value is 4 then throttling is caused by process memory crunch. In this case, consider increasing the value associated with the process memory usage threshold for the host.

If you have throttling problem or performance issue, but do not know how to collect performance counters and analyze then I strongly recommend to use Performance Analysis of Logs (PAL) tool. You can visit to http://pal.codeplex.com/ for more information and download.

I’ve used PAL many times to resolve my client apps performance and throttling issues. PAL report is in HTML format and quite comprehensive to guide you and top of that it’s free. I’m giving you a demo of PAL report from one of my client app that’s throttling due to low host process memory. After going through PAL report and “Message publishing throttling state” counter value, I easily identified throttling reason. I increased process memory usage threshold value from default 25 to 50 percentage i.e. 1 GB and that resolved BizTalk app throttling and performance issue. Below are excerpt from that PAL report showing high process memory usage.

image

Overall Counter Instance Statistics

Overall statistics of each of the counter instances. Min, Avg, and Max are the minimum, average, and Maximum values in the entire log. Hourly Trend is the calculated hourly slope of the entire log. 10%, 20%, and 30% of Outliers Removed is the average of the values after the percentage of outliers furthest away from the average have been removed. This is to help determine if a small percentage of the values are extreme which can skew the average.
Condition \BizTalk:Message Agent(*)\High process memory Min Avg Max Hourly Trend Std Deviation 10% of Outliers Removed 20% of Outliers Removed 30% of Outliers Removed
BizTalk process memory exceeds threshold MyApplicationHost 0 0 1 0 0 0 0 0

Please feel free to reach me if you are encountering BizTalk apps performance or throttling issue I’ve in-depth expertise in dealing with BizTalk apps performance issue and top of that I do free analysis…

Leave a comment