Fuite de mémoire potentielle dans le code d'application Web

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

Cette analyse passe en revue les événements journalisés lorsque le pool d'applications est recyclé en raison du dépassement des seuils de mémoire configurés et définit son état sur avertissement si le pool d'applications est recyclé trop fréquemment (en fonction de la configuration de l'analyse). Il s'agit d'une analyse de réinitialisation manuelle, ce qui signifie qu'elle ne passera pas automatiquement à l'état d'intégrité. Pour que l'analyse passe à l'état d'intégrité, vous devez la réinitialiser à l'aide de l'explorateur d'intégrité.

Knowledge Base article:

Résumé

Le pool d'applications est recyclé trop fréquemment, car sa consommation de mémoire virtuelle ou physique a atteint la limite configurée. Cela peut indiquer une fuite de mémoire dans le code exécuté par le pool d'applications.

Configuration

L'analyse recherche divers événements de recyclage de pool d'applications dus au fait que le seuil d'utilisation de mémoire configuré a été atteint (celui-ci étant configuré dans les outils d'administration IIS). Vous pouvez configurer deux paramètres pour cette analyse. Le premier est « Nombre d'occurrences ». Il s'agit du nombre de fois que les événements recherchés par l'analyse doivent se produire dans l'intervalle de temps configuré. Le second paramètre est « Nombre de minutes ». Il s'agit de l'intervalle de temps pendant lequel l'analyse recherche des occurrences d'événement.

Causes

Résolutions

Pour contrôler ou configurer les paramètres de limite du pool d'applications à l'aide du Gestionnaire des services Internet (IIS) :

Remarque : Puisqu'il s'agit d'un moniteur avec réinitialisation manuelle, une fois le problème résolu, vous devez réinitialiser l'état de ce moniteur dans l'explorateur d'intégrité. Vous pouvez également effectuer cette opération en cliquant avec le bouton droit sur l'analyse, puis en sélectionnant l'élément de menu « Réinitialiser l'intégrité ». Sauf si vous avez réinitialisé manuellement l'analyse, elle ne passera pas à l'état d'intégrité.

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
Fuite de mémoire potentielle dans le code d'application Web
Le pool d'applications {0} sur le serveur {1} a été redémarré plusieurs fois en raison du dépassement des seuils de mémoire spécifiés pour ce pool d'applications. Cela peut indiquer une fuite de mémoire dans le code de l'application Web.
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>