Este monitor analisa os eventos registados quando o conjunto aplicacional é reciclado por ultrapassar os limiares de memória configurados e irá mudar o seu estado para aviso se o conjunto aplicacional for reciclado com demasiada frequência (com base na configuração do monitor). Este é um monitor de reposição manual, o que significa que não irá mudar automaticamente para um bom estado de funcionamento. Para mudar o monitor para um bom estado de funcionamento, será necessário repor o monitor utilizando o explorador do estado de funcionamento.
O conjunto aplicacional é reciclado com demasiada frequência porque o consumo de memória virtual ou física atingiu o limite configurado. Esta situação pode indicar uma fuga de memória no código que o conjunto aplicacional está a executar.
Este monitor funciona procurando uma série de eventos de reciclagem do conjunto aplicacional por ter atingido o limiar de utilização de memória configurado (este valor é configurado nas ferramentas Admin do IIS). Pode configurar dois parâmetros neste monitor. O primeiro é "Número de Ocorrências", ou seja, o número de vezes que os eventos que o monitor procura têm de ocorrer no intervalo de tempo configurado. O segundo parâmetro é "Número de Minutos", ou seja, o intervalo de tempo durante o qual o monitor procura pelas ocorrências dos eventos.
Existe uma fuga de memória no código que o conjunto aplicacional está a executar.
O limite de memória física ou virtual definido é demasiado baixo.
Para verificar ou configurar as definições de limite do conjunto aplicacional utilizando o Gestor de IIS:
Clique em Iniciar, clique em Painel de Controlo e, em seguida, clique em Ferramentas Administrativas.
Clique com o botão direito do rato no Gestor de Serviços de Informação Internet (IIS) e selecione Executar como administrador.
No painel Ligações do lado esquerdo, expanda o computador e selecione a pasta Conjuntos Aplicacionais por baixo do nome do computador.
Na Vista Funcionalidades, selecione o conjunto aplicacional. No painel Ações, selecione Definições Avançadas.
Verifique ou configure as definições dos limites do conjunto aplicacional nas secções apropriadas.
Nota: uma vez que este é um monitor de reposição manual, depois de resolver o problema terá de repor o estado deste monitor no explorador do estado de funcionamento. Pode fazê-lo clicando no monitor com o botão direito do rato e selecionando o item de menu "Repor Estado de Funcionamento". A não ser que reponha manualmente o monitor, o respetivo estado de funcionamento não voltará ao normal.
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>