Host Throttling: High database size

Microsoft.BizTalk.Library.BizTalkServer.MessageAgentHighDatabaseSizeCount (UnitMonitor)

If this state is in error then it indicates that at least one of the BizTalk server processes on the affected computer is being throttled for significant periods because of high database size

Knowledge Base article:

Summary

Monitoring of the “BizTalk:Message Agent\High database size” 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 database size” 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 database Queue into which the Host Process is publishing messages has accumulated a backlog that is more than the user preset value (Message Count in Database parameter in the Advanced Host Property). If the Host is publishing into multiple queues, the weighted average of all the destination queues is taken. The “Database Size” performance counter reflects the weighted average value. This usually indicates that the consuming applications are falling behind and are not able to keep up with the incoming load.

The TrackingData and/or the Spool table have accumulated a backlog that is more than 10 times the Message Count in Database parameter. This usually indicates that these tables are not getting cleaned up fast enough and that the performance of the clean-up jobs are the limiting factor in achieving a higher throughput that is sustainable over time.

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.Library.HostInstance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameBizTalk:Message Agent
Counter NameHigh database size
Frequency60
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveFalse
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityInternal
Alert Message
One of the BizTalk Server processes in the affected computer is being throttled for significant periods because of high database size exceeding the threshold.
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.BizTalk.Library.BizTalkServer.MessageAgentHighDatabaseSizeCount" Accessibility="Internal" Enabled="true" Target="BZLib!Microsoft.BizTalk.Library.HostInstance" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Perf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.BizTalk.Library.BizTalkServer.MessageAgentHighDatabaseSizeCount.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>false</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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/Property[Type="BZLib!Microsoft.BizTalk.Library.Host"]/RunningServer$</ComputerName>
<CounterName>High database size</CounterName>
<ObjectName>BizTalk:Message Agent</ObjectName>
<InstanceName>$Target/Property[Type="BZLib!Microsoft.BizTalk.Library.Host"]/Name$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>60</Frequency>
<Threshold>0.6</Threshold>
<NumSamples>30</NumSamples>
</Configuration>
</UnitMonitor>