Coletar Estatística do .NET/Tempo médio de execução (ms)

Microsoft.SystemCenter.Apm.Transaction.AvgRequestTimeMonitor (UnitMonitor)

Coletar o contador de desempenho Estatística do .NET/Tempo médio de execução (ms)

Knowledge Base article:

Resumo

O estado da instância se tornará não íntegro se o tempo médio de solicitações por período de tempo definido exceder o limite do monitor.

Causas

Alertas de desempenho de transação são gerados quando o número de eventos de desempenho excede o limite do monitor configurado.

Chamadas de banco de dados excessivamente longas podem estar relacionadas a um problema com o servidor ou com a estrutura e a complexidade da consulta. Tempos longos de E/S de arquivo podem estar relacionados a problemas com o servidor de arquivos. Problemas de desempenho de serviços Web podem ocorrer porque o serviço Web ou o servidor no qual ele reside está inoperante ou porque há um problema no código desse serviço Web. Tempos longos de execução interna para aplicativos podem ser o resultado de um código complexo ou ineficiente.

Resoluções

A típica degradação do desempenho do aplicativo pode estar relacionada a uma chamada longa de banco de dados, a uma chamada longa de serviço Web, a uma chamada lenta de Comunicação Remota do .NET, a uma chamada COM+ lenta ou a um código de aplicativo ineficiente.

Element properties:

TargetMicrosoft.SystemCenter.Apm.Transaction
Parent MonitorSystem.Health.PerformanceState
CategoryCustom
EnabledFalse
Instance Name.NET Statistic
Counter NameAvg execution time
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableFalse
AccessibilityPublic
Alert Message
Estatística do .NET/Tempo médio de execução excedeu o limite
O contador de desempenho Estatística do .NET/Tempo médio de execução excedeu o limite configurado de {0} ms. O valor do contador de desempenho foi de {1} ms.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Apm.Transaction.AvgRequestTimeMonitor" Accessibility="Public" Enabled="false" Target="Microsoft.SystemCenter.Apm.Transaction" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="false" Priority="Normal" TypeID="Performance!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.Apm.Transaction.AvgRequestTimeMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorThreshold$</AlertParameter1>
<AlertParameter2>$Data/Context/SampleValue$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Avg execution time</CounterName>
<ObjectName>.NET Statistic</ObjectName>
<InstanceName>$Target/Property[Type="Microsoft.SystemCenter.Apm.Transaction"]/CounterInstance$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorInterval$</Frequency>
<Threshold>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorThreshold$</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>