Host Throttling: High thread count

Microsoft.BizTalk.Server.2013R2.MessageAgentHighThreadCount.PerformanceMonitor (UnitMonitor)

This error indicates that at least one of the BizTalk server processes in the affected computer is being throttled for significant periods on account of high thread counts.

Knowledge Base article:

Summary

Monitoring of the "BizTalk:Message Agent\High thread 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 thread 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 process has created too many threads and the total number of threads in the process has exceeded the limit

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.2013R2.BizTalkApplicationService
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameBizTalk:Message Agent
Counter NameHigh thread count
Frequency60
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
One of the BizTalk server processes in the affected computer is being throttled for significant periods on account of high thread counts exceeding the threshold.
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.BizTalk.Server.2013R2.MessageAgentHighThreadCount.PerformanceMonitor" Accessibility="Public" Enabled="true" Target="BTSLib!Microsoft.BizTalk.Server.2013R2.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.2013R2.MessageAgentHighThreadCount.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.2013R2.ServerRole"]/ComputerName$</ComputerName>
<CounterName>High thread count</CounterName>
<ObjectName>BizTalk:Message Agent</ObjectName>
<InstanceName>$Target/Property[Type="BTSLib!Microsoft.BizTalk.Server.2013R2.BizTalkApplicationService"]/BizTalkHostName$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>60</Frequency>
<Threshold>0.6</Threshold>
<NumSamples>30</NumSamples>
</Configuration>
</UnitMonitor>