Web uygulaması kodunda olası bellek sızıntısı

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

Bu izleyici, yapılandırılmış bellek eşikleri aşıldığı için uygulama havuzu geri dönüştürüldüğünde günlüğe kaydedilen olayları inceler ve uygulama havuzu çok sık geri dönüştürülüyorsa durumunu uyarı olarak değiştirir (izleyicinin yapılandırmasına göre). Bu, el ile sıfırlama izleyicisidir; yani otomatik olarak iyi durumuna geçmeyecektir. İzleyiciyi iyi durumuna geçirmek için sistem durumu gezginini kullanarak izleyiciyi sıfırlamanız gerekecektir.

Knowledge Base article:

Özet

Uygulama havuzu, sanal veya fiziksel bellek tüketimi yapılandırılmış sınıra ulaştığı için çok sık geri dönüştürülüyor. Bu, uygulama havuzunun yürüttüğü kodun içinde bellek sızıntısı olduğunun göstergesi olabilir.

Yapılandırma

Bu izleyici, yapılandırılmış bellek kullanım eşiğine (bu, IIS Yönetim araçlarında yapılandırılmıştır) ulaşılması nedeniyle gerçekleşen uygulama havuzu geri dönüştürme olaylarının sayısını bularak çalışır. Bu izleyici için yapılandırabileceğiniz iki parametre vardır. İlki, izleyicinin aradığı olayların yapılandırılmış zaman aralığında gerçekleşmesi gereken sayı olan "Yinelenme Sayısı"dır. İkinci parametre ise, izleyicinin olay yinelemelerini aradığı zaman aralığı olan "Dakika Sayısı"dır.

Nedenler

Çözümler

IIS Yöneticisi'ni kullanarak uygulama havuzu sınır ayarlarını denetlemek veya yapılandırmak için:

Not: Bu bir el ile sıfırlama izleyicisi olduğundan, sorunu giderdikten sonra bu izleyicinin durumunu sistem durumu gezgininde sıfırlamanız gerekecektir. Bunu izleyiciye sağ tıklayarak ve "Sistem Durumunu Sıfırla" menü öğesini seçerek yapabilirsiniz. İzleyiciyi el ile sıfırlamazsanız, iyi durumuna geçmeyecektir.

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
Web uygulaması kodunda olası bellek sızıntısı
{1} sunucusundaki {0} Uygulama Havuzu, bu uygulama havuzu için belirtilen bellek eşiklerinin aşılması nedeniyle birkaç kez yeniden başlatıldı. Bu, web uygulamasının kodu içinde bir bellek sızıntısı olduğunu gösterebilir.
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>