ヘルスサービスの Handle Count のしきい値

Microsoft.SystemCenter.Agent.HealthService.HandleCountThreshold (UnitMonitor)

この監視は、HealthService.exe プロセスの平均 Process\Handle Count カウンタが、構成されているしきい値を超えているかどうかを確認します。カウンタがしきい値に達すると、自動的に回復がトリガされ、ヘルスサービスが再起動されます。

Knowledge Base article:

概要

このユニット モニタは、HealthService.exe プロセスの Process\Handle Count 利用率を測定します。利用率がしきい値を超えると、回復処理によってヘルスサービスの再起動が試行され、コンピュータに過剰な負荷がかからなくなります。

ヘルスサービスを実行するように構成された役割に応じて、さまざまなしきい値があります。既定のしきい値の概要を以下に示します。

ヘルス サービス ロール

Handle Count しきい値

エージェント

2,000

管理サーバー

10,000

ヘルスサービスの再起動を試行する回復処理の構成を以下に示します。

ヘルス サービス ロール

回復再起動の動作

エージェント

有効

管理サーバー

無効

原因

考えられる原因の概要:

このヘルスサービスが構成されている管理パックから、過剰なルールおよびモニタがロードされています。

ルールまたはモニタが誤って構成されていることが原因で、過剰なデータ コレクションまたは過剰なデータ処理が実行されています (たとえば、パフォーマンス カウンタの収集ルールにより、1 秒ごとにデータが収集されている)。

ヘルスサービスが多数の管理パックを実行していると、この問題が発生する場合があります。各管理パックに、リソースをあまり消費しない監視が多数存在する可能性があります。管理パックの数が増えると、ルールおよびモニタの数が数千になり、ヘルスサービスで消費するリソースが増える場合があります。

ヘルスサービスが実行している監視の種類によって、この問題が発生する場合があります。

別の原因としては、1 つまたは複数のルールおよびモニタがベスト プラクティスに沿っていないことが考えられます。1 秒ごとにパフォーマンス データを収集するパフォーマンス カウンタ ルールなどは、その例です。このように、構成されているルールまたはモニタが多すぎると、ヘルスサービスと関連プロセスによって消費されるリソースが増える原因になります。

解決方法

エージェント上で動作するこのモニタの既定の動作では、ヘルスサービスが再起動されます。この回復はエージェント上で既定で有効になっているので、ユーザーの操作は不要です。

それでもこのモニタが重大な状態のままである場合は、ヘルスサービスが正しく再起動されていないか、このエージェントが構成されているアクション アカウントにサービスを再起動する権限がありません。

この場合、Windows のヘルスサービスを開始してください。

Element properties:

TargetMicrosoft.SystemCenter.HealthService
Parent MonitorMicrosoft.SystemCenter.HealthService.ServiceStateRollup
CategoryStateCollection
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveFalse
Monitor TypeMicrosoft.SystemCenter.Agent.Performance.AveragerThresholdWithSingleSampleSuccessState
RemotableTrue
AccessibilityInternal
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Agent.HealthService.HandleCountThreshold" Accessibility="Internal" Enabled="true" Target="SCLibrary!Microsoft.SystemCenter.HealthService" ParentMonitorID="Microsoft.SystemCenter.HealthService.ServiceStateRollup" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.Agent.Performance.AveragerThresholdWithSingleSampleSuccessState" ConfirmDelivery="false">
<Category>StateCollection</Category>
<OperationalStates>
<OperationalState ID="HandleCountUnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="HandleCountOverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ObjectName>Process</ObjectName>
<CounterName>Handle Count</CounterName>
<InstanceName>HealthService*</InstanceName>
<Frequency>120</Frequency>
<NumSamples>5</NumSamples>
<Threshold>2000</Threshold>
</Configuration>
</UnitMonitor>