Potenciální nevrácená paměť v kódu webové aplikace

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

Tento monitor vyhledává události zaprotokolované při recyklaci fondu aplikací v důsledku překročení nakonfigurovaných prahových hodnot paměti a změní svůj stav na varování v případě příliš časté recyklace fondu aplikací (na základě konfigurace monitoru). Jedná se o monitor s ručním resetováním, to znamená, že automaticky nepřejde do stavu V pořádku. Pokud chcete monitor přepnout do stavu V pořádku, je nutné ho resetovat pomocí průzkumníka stavu.

Knowledge Base article:

Souhrn

Fond aplikací je příliš často recyklován, protože spotřeba jeho virtuální nebo fyzické paměti dosáhla nakonfigurovaného limitu. To by mohlo značit nevrácenou paměť v rámci kódu, ve kterém se fond aplikací spouští.

Konfigurace

Tento monitor funguje na principu vyhledání počtu událostí recyklace fondu aplikací kvůli dosažení prahové hodnoty spotřeby nakonfigurované paměti (konfigurace je provedena v rámci nástrojů pro správu služby IIS). Pro tento monitor je možné nakonfigurovat dva parametry. Prvním je „Počet výskytů.“ Jedná se o počet opakování, kdy musí nastat události, které monitor hledá, v nakonfigurovaném časovém intervalu. Druhým parametrem je „Počet minut.“ Představuje časový interval, ve kterém monitor vyhledává výskyty události.

Příčiny

Řešení

Postup pro kontrolu nebo konfiguraci nastavení limitů fondu aplikací pomocí správce služby IIS:

Poznámka: Vzhledem k tomu, že se jedná o monitor pro ruční resetování, budete muset po vyřešení problému resetovat stav tohoto monitoru v prohlížeči stavu. Postup: klikněte pravým tlačítkem myši na monitor a vyberte položku nabídky Resetovat stav. Dokud monitor ručně neresetujete, nepřejde do stavu V pořádku.

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
Potenciální nevrácená paměť v kódu webové aplikace
Fond aplikací {0} na serveru {1} byl několikrát restartován kvůli překročení prahových hodnot paměti zadaných pro tento fond aplikací. To by mohlo značit nevrácenou paměť v rámci kódu webové aplikace.
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>