Host Throttling: High in-process message count over time

Microsoft.BizTalk.Server.2016.MessageAgentHighInprocessMessageCount.PerformanceMonitor (UnitMonitor)

The state of the in-process message count over time.

Knowledge Base article:

Summary

Monitoring of the "BizTalk:Message Agent\High in-process message count" counter over a series of samples has indicated that the threshold defined has been consistently exceeded over that period of time.

Configuration

This monitor watches the value of the "BizTalk:Message Agent\High in-process message count" counter for all host instance. That counter has a value of "1" or "0" based on whether the thresholds have been meet/exceeded or not (respectively). If the average value over 30 samples exceeds the preset threshold, which is set to 0.6 by default, then the state will change from healthy to critical. This monitor is configured by default to generate an alert when the state is changed to critical.

Causes

The Orchestration Engine or the Outbound Transport Manager / Adapter have accepted too many messages concurrently and those messages are not being processed in a timely manner. Hence the runtime engine is not accepting new messages for processing.

If the runtime engine is using CPU and all other resources as usual, then even if the system is throttling- it is not necessarily an indication of a bad condition. This could simply mean that the system is processing the workload in the normal fashion and throttling has been applied to prevent overloading the system.

Resolutions

External

Host Throttling Performance Counters: http://technet.microsoft.com/en-us/library/aa578302.aspx

How to Modify the Default Host Throttling Settings: http://technet.microsoft.com/en-us/library/aa559628.aspx

Throttling Design Recommendation: http://technet.microsoft.com/en-us/library/aa547859.aspx

Element properties:

TargetMicrosoft.BizTalk.Server.2016.BizTalkApplicationService
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameBizTalk:Message Agent
Counter NameHigh in-process message count
Frequency60
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
A high in-process message count has been detected on average over a series of samples.
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.BizTalk.Server.2016.MessageAgentHighInprocessMessageCount.PerformanceMonitor" Accessibility="Public" Enabled="true" Target="BTSLib!Microsoft.BizTalk.Server.2016.BizTalkApplicationService" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Perf!System.Performance.AverageThreshold" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.BizTalk.Server.2016.MessageAgentHighInprocessMessageCount.PerformanceMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="BTSLib!Microsoft.BizTalk.Server.2016.ServerRole"]/ComputerName$</ComputerName>
<CounterName>High in-process message count</CounterName>
<ObjectName>BizTalk:Message Agent</ObjectName>
<InstanceName>$Target/Property[Type="BTSLib!Microsoft.BizTalk.Server.2016.BizTalkApplicationService"]/BizTalkHostName$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>60</Frequency>
<Threshold>0.6</Threshold>
<NumSamples>30</NumSamples>
</Configuration>
</UnitMonitor>