ホストのハンドル数のしきい値の監視

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

このモニターは、"MonitoringHost.exe" プロセスの "Process\Handle Count" カウンターが、連続するいくつかのサンプルで、設定済みのしきい値を超えていないかどうかを確認します。 しきい値を超えた場合は、このモニターの状態が "重大" に変わり、"ヘルス サービスの状態" モニターにロールアップします。 "ヘルス サービスの状態" モニターは、その状態が重大になったときに復元処理を実行するように構成されており、自動的に System Center Management ヘルス サービスを再開しようとします。

Knowledge Base article:

概要

このルールは、ホスト監視プロセスのすべてのインスタンスの Process\Handle Count 利用率を測定します。 利用率が構成済みのしきい値を超えると、コンピューターが過負荷のままにならないように、応答によって System Center Management ヘルス サービスが再開されます。

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

System Center Management ヘルス サービス ロール

Handle Count のしきい値

エージェント

6,000

管理サーバー

10,000

System Center Management ヘルス サービスの再起動を試行する応答の構成を以下に示します。

System Center Management ヘルス サービス ロール

再開の応答動作

エージェント

有効

管理サーバー

再開の応答なし

原因

考えられる原因の概要:

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

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

System Center Management ヘルス サービスが多数の管理パックを実行していると、この問題が発生する場合があります。 各管理パックに、リソースをあまり消費しない監視が多数存在する可能性があります。 管理パックの数が増えると、ルールとモニターが膨大な数になり、各ホスト監視インスタンスのリソース消費量が上がる場合があります。

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

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

解決策

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

このエージェントが構成されているアクション アカウントにサービスを再開する権限がない場合、System Center Management ヘルス サービスが正しく再開しない可能性があります。

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

このエージェントが実行している監視量に対して、リソースの利用率が妥当であると判断した場合は、しきい値を無効にするか、このルールを無効にしてかまいません。

Element properties:

TargetMicrosoft.SystemCenter.Agent
Parent MonitorMicrosoft.SystemCenter.HealthService.ServiceStateRollup
CategoryPerformanceHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.Agent.Performance.ConsecutiveSamplesThreshold.MonitorType
RemotableFalse
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Agent.MonitoringHost.HandleCountThreshold" Accessibility="Public" Enabled="true" Target="SCLibrary!Microsoft.SystemCenter.Agent" ParentMonitorID="Microsoft.SystemCenter.HealthService.ServiceStateRollup" Remotable="false" Priority="High" TypeID="Microsoft.SystemCenter.Agent.Performance.ConsecutiveSamplesThreshold.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<OperationalStates>
<OperationalState ID="HandleCountUnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="HandleCountOverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<ObjectName>Process</ObjectName>
<CounterName>Handle Count</CounterName>
<InstanceName>MonitoringHost*</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>120</Frequency>
<NumSamples>5</NumSamples>
<Threshold>6000</Threshold>
<Direction>greater</Direction>
</Configuration>
</UnitMonitor>