Möjlig minnesläcka i programkoden för webbprogram

Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool.MemoryLeak.Monitor (UnitMonitor)

Den här övervakaren kontrollerar händelser som loggas när programpoolen återvinns på grund av att de konfigurerade minneströsklarna överskridits och ändrar status till varning om programpoolen återvinns för ofta (baserat på övervakarens konfiguration). Det här är en övervakare som återställs manuellt vilket innebär att den inte går över till felfritt tillstånd automatiskt. Om du vill växla övervakaren till felfritt tillstånd måste du återställa övervakaren med hjälp av hälsoutforskaren.

Knowledge Base article:

Sammanfattning

Programpoolen återvinns för ofta eftersom den virtuella eller fysiska minnesförbrukningen nådde den konfigurerade gränsen. Detta kan tyda på en minnesläcka inuti den kod som programpoolen kör.

Konfiguration

Övervakaren fungerar så att den söker efter ett antal händelser av typen programpoolsåtervinning på grund av att den konfigurerade tröskeln för minnesanvändning uppnåtts (detta konfigureras inifrån IIS-administratörsverktygen). Det finns två parametrar som du kan konfigurera för den här övervakaren. Det första är antalet förekomster. Detta är det antal gånger som händelser som övervakaren söker efter behöver förekomma under det konfigurerade tidsintervallet. Den andra parametern är antalet minuter. Detta är det tidsintervall under vilket övervakaren söker efter händelseförekomsterna.

Orsaker

Lösningar

Så här kontrollerar eller konfigurerar du inställningarna för programpoolsgränsen med hjälp av IIS Manager:

Obs! Eftersom det här är en manuell återställningsövervakare måste du återställa statusen för övervakaren i hälsoutforskaren när du har korrigerat problemet. Det kan du göra genom att högerklicka på övervakaren och välja menyalternativet Återställ hälsotillstånd. Om du inte återställer övervakaren manuellt kommer den inte att växla till felfritt tillstånd.

Element properties:

TargetMicrosoft.Windows.InternetInformationServices.6.2.ApplicationPool
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.InternetInformationServices.6.2.RepeatedEventLogManualReset2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Möjlig minnesläcka i programkoden för webbprogram
Programpoolen {0} på servern {1} har startats om flera gånger på grund av att de minneströskelvärden som angetts för programpoolen har överskridits. Detta kan indikera en minnesläcka inuti webbprogrammets kod.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool.MemoryLeak.Monitor" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.InternetInformationServices.6.2.RepeatedEventLogManualReset2StateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool.MemoryLeak.Monitor_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="IISCommon!Microsoft.Windows.InternetInformationServices.ApplicationPool"]/PoolID$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="PotentialMemoryLeakDetected" MonitorTypeStateID="RepeatedEventRaised" HealthState="Warning"/>
<OperationalState ID="Healthy" MonitorTypeStateID="ManualResetEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<RepeatedComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</RepeatedComputerName>
<RepeatedLogName>System</RepeatedLogName>
<RepeatedExpression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(5117|5077)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-WAS</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="IISCommon!Microsoft.Windows.InternetInformationServices.ApplicationPool"]/PoolID$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</RepeatedExpression>
<NumberOfSeconds>3600</NumberOfSeconds>
<NumberOfOccurrences>10</NumberOfOccurrences>
</Configuration>
</UnitMonitor>