Этот монитор рассматривает события, сохраненные в журнале при перезапуске пула приложений в результате превышения настроенных порогов памяти, и изменяет свое состояние на "Предупреждение", если пул приложений перезапускается чересчур часто (в зависимости от конфигурации монитора). Это монитор со сбросом вручную, а это значит, что он не переключится в состояние "Исправно" автоматически. Чтобы переключить монитор в состояние "Исправно", понадобится произвести сброс монитора при помощи анализатора работоспособности.
Пул приложений перезапускается чересчур часто, так как потребление виртуальной или физической памяти достигло установленного предела. Это может указывать на утечку памяти в коде, выполняемом пулом приложений.
Этот монитор работает путем поиска определенного количества событий перезапуска пула приложений по причине достижения установленного порога использования памяти (этот параметр настроен в Средствах администрирования IIS). Для этого монитора можно настроить два параметра. Первый — "Число экземпляров" — это количество возникновения событий, которые отслеживает монитор, в пределах установленного интервала времени. Второй параметр — "Число минут" — это интервал времени, в рамках которого монитор производит поиск возникновения событий.
В коде, выполняемом пулом приложений, существует утечка памяти.
Предел физической или виртуальной памяти установлен чересчур низко.
Проверка и настройка параметров предела для пула приложений при помощи Диспетчера службы IIS:
В меню Пуск выберите Панель управления, а затем — Администрирование.
Щелкнув правой кнопкой мыши на приложении "Диспетчер служб IIS", выберите "Запуск от имени администратора".
В области "Подключения" слева разверните узел компьютера, затем выберите папку "Пулы приложений" под именем компьютера.
В окне просмотра возможностей выберите пул приложений. В области Действия выберите Дополнительные параметры.
Проверьте или настройте параметры пределов для пула приложений в соответствующих разделах.
Примечание. Так как этот монитор является монитором со сбросом вручную, после устранения проблемы понадобится сбросить состояние монитора при помощи анализатора работоспособности. Это можно сделать, щелкнув правой кнопкой мыши на мониторе, и выбрав пункт меню "Сброс состояния работоспособности". Если не выполнить сброс состояния монитора вручную, он не вернется в состояние "Исправно".
Target | Microsoft.Windows.InternetInformationServices.6.2.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.6.2.RepeatedEventLogManualReset2StateMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>