Möglicher Speicherverlust im Webanwendungscode

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

Dieser Monitor sucht nach protokollierten Ereignissen, wenn der Anwendungspool aufgrund einer Überschreitung der konfigurierten Arbeitsspeicher-Schwellenwerte wiederverwendet wird, und ändert dessen Status in "Warnung", wenn der Anwendungspool zu häufig wiederverwendet wird (basierend auf der Konfiguration des Monitors). Dies ist ein Monitor für die manuelle Zurücksetzung, d. h., es wird nicht automatisch in den fehlerfreien Status gewechselt. Um den Monitor in den fehlerfreien Status zu wechseln, müssen Sie den Monitor mithilfe des Integritäts-Explorers zurücksetzen.

Knowledge Base article:

Zusammenfassung

Der Anwendungspool wird zu häufig wiederverwendet, da sein Verbrauch des virtuellen oder physischen Speichers die konfigurierte Grenze erreicht hat. Dies könnte auf einen Speicherverlust im Code hinweisen, der vom Anwendungspool ausgeführt wird.

Konfiguration

Dieser Monitor überprüft eine Reihe von Ereignissen im Zusammenhang mit der Wiederverwendung des Anwendungspools, die darauf zurückzuführen sind, dass der konfigurierte Schwellenwert für die Speichernutzung erreicht wurde (dieser wird in den IIS-Verwaltungstools konfiguriert). Für diesen Monitor können Sie zwei Parameter konfigurieren. Der erste Parameter ist der Parameter für die Anzahl von Vorkommen, der angibt, wie oft Ereignisse, nach denen der Monitor sucht, im konfigurierten Zeitintervall auftreten müssen. Der zweite Parameter ist der Parameter für die Anzahl von Minuten, der das Zeitintervall angibt, in dem der Monitor nach Ereignisvorkommen sucht.

Ursachen

Lösungen

So überprüfen oder konfigurieren Sie die Einstellungen für das Anwendungspoollimit mithilfe des IIS-Managers

Hinweis: Da es sich hierbei um eine manuelle Zurücksetzung handelt, müssen Sie nach dem Beheben des Problems den Status des Monitors im Integritäts-Explorer zurücksetzen. Zu diesem Zweck können Sie mit der rechten Maustaste auf den Monitor klicken und das Menüelement "Integrität zurücksetzen" auswählen. Sofern Sie den Monitor nicht manuell zurücksetzen, kehrt er nicht in den fehlerfreien Status zurück.

Element properties:

TargetMicrosoft.Windows.InternetInformationServices.10.0.ApplicationPool
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.InternetInformationServices.10.0.RepeatedEventLogManualReset2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Möglicher Speicherverlust im Webanwendungscode
Der Anwendungspool {0} auf Server {1} wurde mehrere Male aufgrund einer Überschreitung der für diesen Anwendungspool konfigurierten Arbeitsspeicher-Schwellenwerte neu gestartet. Dies kann auf einen Speicherverlust im Webanwendungscode hinweisen.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.InternetInformationServices.10.0.ApplicationPool.MemoryLeak.Monitor" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.10.0.ApplicationPool" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.InternetInformationServices.10.0.RepeatedEventLogManualReset2StateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.InternetInformationServices.10.0.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>