この監視は、HealthService.exe プロセスの平均 Process\Handle Count カウンタが、構成されているしきい値を超えているかどうかを確認します。カウンタがしきい値に達すると、自動的に回復がトリガされ、ヘルスサービスが再起動されます。
このユニット モニタは、HealthService.exe プロセスの Process\Handle Count 利用率を測定します。利用率がしきい値を超えると、回復処理によってヘルスサービスの再起動が試行され、コンピュータに過剰な負荷がかからなくなります。
ヘルスサービスを実行するように構成された役割に応じて、さまざまなしきい値があります。既定のしきい値の概要を以下に示します。
ヘルス サービス ロール | Handle Count しきい値 |
エージェント | 2,000 |
管理サーバー | 10,000 |
ヘルスサービスの再起動を試行する回復処理の構成を以下に示します。
ヘルス サービス ロール | 回復再起動の動作 |
エージェント | 有効 |
管理サーバー | 無効 |
考えられる原因の概要:
このヘルスサービスが構成されている管理パックから、過剰なルールおよびモニタがロードされています。 |
ルールまたはモニタが誤って構成されていることが原因で、過剰なデータ コレクションまたは過剰なデータ処理が実行されています (たとえば、パフォーマンス カウンタの収集ルールにより、1 秒ごとにデータが収集されている)。 |
ヘルスサービスが多数の管理パックを実行していると、この問題が発生する場合があります。各管理パックに、リソースをあまり消費しない監視が多数存在する可能性があります。管理パックの数が増えると、ルールおよびモニタの数が数千になり、ヘルスサービスで消費するリソースが増える場合があります。
ヘルスサービスが実行している監視の種類によって、この問題が発生する場合があります。
別の原因としては、1 つまたは複数のルールおよびモニタがベスト プラクティスに沿っていないことが考えられます。1 秒ごとにパフォーマンス データを収集するパフォーマンス カウンタ ルールなどは、その例です。このように、構成されているルールまたはモニタが多すぎると、ヘルスサービスと関連プロセスによって消費されるリソースが増える原因になります。
エージェント上で動作するこのモニタの既定の動作では、ヘルスサービスが再起動されます。この回復はエージェント上で既定で有効になっているので、ユーザーの操作は不要です。
それでもこのモニタが重大な状態のままである場合は、ヘルスサービスが正しく再起動されていないか、このエージェントが構成されているアクション アカウントにサービスを再起動する権限がありません。
この場合、Windows のヘルスサービスを開始してください。
Target | Microsoft.SystemCenter.HealthService |
Parent Monitor | Microsoft.SystemCenter.HealthService.ServiceStateRollup |
Category | StateCollection |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | False |
Monitor Type | Microsoft.SystemCenter.Agent.Performance.AveragerThresholdWithSingleSampleSuccessState |
Remotable | True |
Accessibility | Internal |
RunAs | Default |
<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>