當 MonitoringHost.exe 處理序超過 Process\Handle Count 閾值時,重新啟動健全狀況服務。
此規則會測量 MonitoringHost.exe 處理序所有執行個體的 [Process\Handle Count] 使用量。如果其超過設定的閾值,就會產生警示。
依據設定健全狀況服務執行的角色,會有多種不同閾值。以下是預設閾值摘要:
健全狀況服務角色 | 控制碼計數閾值 |
代理程式 | 2,000 |
管理伺服器 | 10,000 |
以下是會嘗試重新啟動健全狀況服務的回應之設定:
健全狀況服務角色 | 重新啟動回應行為 |
代理程式 | 已啟用 |
管理伺服器 | 無重新啟動回應 |
可能原因的簡短摘要如下:
從設定此健全狀況服務的所有管理組件載入太多規則與監視。 |
設定錯誤的規則或監視收集太多資料或處理太多資料 (例如效能計數器集合規則會每 1 秒收集一次資料) |
這可能是由執行多個管理組件的健全狀況服務所造成。每個管理組件可能有許多使用少量資源的監視。由於每個 MonitoringHost.exe 執行個體具有總計達數千個規則與監視的多個管理組件,可能會消耗更多資源。
視健全狀況服務所執行的監視類型而定,這是此健全狀況服務可能會發生的狀況。
另一個原因可能是有一個或多個規則與監視不符合某些最佳作法。例如嘗試每 1 秒收集一次效能資料的效能計數器規則。如果如此設定的規則與監視太多,會導致 monitoring host.exe 處理序消耗更多資源。
此規則於管理伺服器執行的預設動作為警示。
如果您認為此代理程式執行之監視數量所使用的資源很適當,可以覆寫閾值或停用復原。
如果健全狀況服務及其關聯的 MonitoringHost.exe 處理序仍然消耗過多資源,您可以重新啟動 HealthService Windows 服務以緩和此問題。
Target | Microsoft.SystemCenter.ManagementServer | ||
Category | Maintenance | ||
Enabled | False | ||
Instance Name | Process | ||
Counter Name | Handle Count | ||
Frequency | 120 | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
|
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DataSource | DataSource | System.Performance.DataProvider | Default |
CDAveragerThreshold | ConditionDetection | System.Performance.AverageThresholdCondition | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SystemCenter.ManagementServer.MonitoringHost.HandleCountThreshold" Enabled="false" Target="SCLibrary!Microsoft.SystemCenter.ManagementServer" ConfirmDelivery="false" Remotable="true" Priority="High" DiscardLevel="100">
<Category>Maintenance</Category>
<DataSources>
<DataSource ID="DataSource" TypeID="Performance!System.Performance.DataProvider">
<CounterName>Handle Count</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName>MonitoringHost*</InstanceName>
<Frequency>120</Frequency>
</DataSource>
</DataSources>
<ConditionDetection ID="CDAveragerThreshold" TypeID="Performance!System.Performance.AverageThresholdCondition">
<NumSamples>5</NumSamples>
<Threshold>10000</Threshold>
<Operator>Greater</Operator>
</ConditionDetection>
<WriteActions>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.SystemCenter.ManagementServer.MonitoringHost.HandleCountThreshold.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Value$</AlertParameter2>
</AlertParameters>
<Suppression>
<SuppressionValue>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>