Windows DNS Server 2016 Cache Limit Hit

Microsoft.Windows.DNSServer.2016.Monitor.CacheLimitHit (UnitMonitor)

Monitors Configured Cache Size

Knowledge Base article:

Summary

Event based monitor, which monitors configured cache limit.

Causes

Warning State

Triggered by event with ID 7688. Cause: The size of the cache on DNS Server is approaching its configured limit. An event has been fired by recursion thread to bring down the cache size within the configured limit. The system may experience momentary CPU spikes.

Critical State

Triggered by event with ID 7689. Cause: The size of the cache on DNS Server is approaching its configured limit. Timeout thread has started to bring down the cache size within the configured limit. The system may experience momentary CPU spikes.

Healthy state could be triggered by event with ID 7690: The size of the cache on DNS Server has been brought within its configured limit.

Resolutions

The DNS Server will automatically scavenge and if needed flush the cache to bring it under the configured limit. The users might experience CPU spikes due to this. If this error is too frequent then please check the configured cache limit. If it is too low for your deployment change accordingly.

Element properties:

TargetMicrosoft.Windows.DNSServer.2016.Server
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.3SingleEventLog3StateUnitMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Windows DNS Server 2016 - Cache Limit Hit Monitor Alert

Event ID: {0}
Event Source: {1}
Event Log: {2}
Event Description: {3}
RunAsMicrosoft.Windows.DNSServer.2016.ActionAccount

Source Code:

<UnitMonitor ID="Microsoft.Windows.DNSServer.2016.Monitor.CacheLimitHit" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.DNSServer.2016.Server" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" RunAs="Microsoft.Windows.DNSServer.2016.ActionAccount" TypeID="Windows!Microsoft.Windows.3SingleEventLog3StateUnitMonitorType" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.DNSServer.2016.Monitor.CacheLimitHit_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDisplayNumber$</AlertParameter1>
<AlertParameter2>$Data/Context/EventSourceName$</AlertParameter2>
<AlertParameter3>$Data/Context/Channel$</AlertParameter3>
<AlertParameter4>$Data/Context/EventDescription$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="WarningState" MonitorTypeStateID="FirstEventRaised" HealthState="Warning"/>
<OperationalState ID="ErrorState" MonitorTypeStateID="SecondEventRaised" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="ThirdEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</FirstComputerName>
<FirstLogName>DNS Server</FirstLogName>
<FirstExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">7688</Value>
</ValueExpression>
</SimpleExpression>
</FirstExpression>
<SecondComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</SecondComputerName>
<SecondLogName>DNS Server</SecondLogName>
<SecondExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">7689</Value>
</ValueExpression>
</SimpleExpression>
</SecondExpression>
<ThirdComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ThirdComputerName>
<ThirdLogName>DNS Server</ThirdLogName>
<ThirdExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">7690</Value>
</ValueExpression>
</SimpleExpression>
</ThirdExpression>
</Configuration>
</UnitMonitor>