Ten monitor sprawdza zdarzenia rejestrowane po odzyskaniu puli aplikacji z powodu przekroczenia skonfigurowanych progów ilości pamięci i zmienia stan na ostrzegawczy, jeśli pula aplikacji jest odzyskiwana zbyt często (zależnie od konfiguracji monitora). Jest to monitor resetowany ręcznie, co znaczy, że nie zmienia automatycznie stanu na prawidłowy. Aby przełączyć stan monitora na prawidłowy, trzeba go zresetować przy użyciu eksploratora kondycji.
Pula aplikacji jest zbyt często odzyskiwana z powodu osiągnięcia skonfigurowanego limitu wykorzystania pamięci wirtualnej lub fizycznej. Może to oznaczać przeciek pamięci w kodzie wykonywanym w ramach puli aplikacji.
Ten monitor sprawdza liczbę zdarzeń odzyskiwania puli aplikacji z powodu osiągnięcia skonfigurowanego progu wykorzystania pamięci (jest on konfigurowany w narzędziach administracyjnych usług IIS). Ten monitor ma dwa parametry, które można skonfigurować. Pierwszy to „Liczba wystąpień” definiująca, ile razy w skonfigurowanym interwale czasu muszą wystąpić zdarzenia sprawdzane przez monitor. Drugi parametr to „Liczba minut”, czyli interwał czasu, w którym monitor szuka wystąpień zdarzeń.
Istnieje przeciek pamięci w kodzie wykonywanym w ramach puli aplikacji.
Limit pamięci fizycznej lub wirtualnej jest zbyt niski.
Aby sprawdzić lub skonfigurować ustawienia limitów puli aplikacji przy użyciu Menedżera usług IIS:
Kliknij przycisk Start, kliknij pozycję Panel sterowania, a następnie kliknij pozycję Narzędzia administracyjne.
Kliknij prawym przyciskiem myszy pozycję Menedżer internetowych usług informacyjnych (IIS) i wybierz polecenie Uruchom jako administrator.
W okienku Połączenia po lewej stronie rozwiń węzeł komputera, a następnie pod jego nazwą wybierz folder Pule aplikacji.
W widoku funkcji wybierz pulę aplikacji. W okienku Akcje wybierz pozycję Ustawienia zaawansowane.
Sprawdź lub skonfiguruj ustawienia limitów puli aplikacji w odpowiednich sekcjach.
Uwaga: Jest to monitor resetowany ręcznie, dlatego po rozwiązaniu problemu należy zresetować stan monitora w eksploratorze kondycji. Można to zrobić przez kliknięcie monitora prawym przyciskiem myszy i wybranie elementu menu „Resetowanie kondycji”. Bez ręcznego zresetowania stan monitora nie zmieni się na prawidłowy.
Target | Microsoft.Windows.InternetInformationServices.10.0.ApplicationPool | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Windows.InternetInformationServices.10.0.RepeatedEventLogManualReset2StateMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>