运行状况服务句柄计数阈值

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

此监视器确保用于 "HealthService.exe" 进程的 "Process\Handle Count" 计数器不超过对一系列连续样本设置的阈值。 如果符合条件,此监视器将更改为严重状态,随后将汇总到“运行状况服务状态”监视器。 “运行状况服务状态”监视器被配置为在其状态为严重时运行恢复,因此将自动尝试重新启动 System Center 管理运行状况服务。

Knowledge Base article:

摘要

此单元监视器测量运行状况服务进程的 Process\Handle Count 使用率。 如果超出了配置的阈值,恢复操作将尝试重新启动 System Center 管理运行状况服务以确保它不会继续过度占用计算机。

有不同的阈值,具体取决于配置的 System Center 管理运行状况服务所执行的角色。 以下汇总了默认阈值:

System Center 管理运行状况服务角色

句柄计数阈值

代理

6,000

管理服务器

10,000

下面是尝试重新启动 System Center 管理运行状况服务的恢复的配置:

System Center 管理运行状况服务角色

重新启动恢复行为

代理

已启用

管理服务器

已禁用

原因

可能原因可概述为:

从此 System Center 管理运行状况服务配置的所有管理包加载了太多规则和监视器。

配置错误的规则或监视器收集了太多数据或处理了太多数据(例如性能计数器收集规则每 1 秒收集一次数据)

这可能是由运行多个管理包的 System Center 管理运行状况服务导致的。 每个管理包可能有很多使用少量资源的监视。 由于很多管理包添加了数千条规则和监视器,System Center 管理运行状况服务可能开始消耗更多资源。

根据 System Center 管理运行状况服务正在执行的监视类型,此 System Center 管理运行状况服务预期可能会出现这种情况。

另一个原因可能是一个或多个规则和监视器不符合某些最佳方案。 一个例子是性能计数器规则尝试每 1 秒收集一次性能数据。 以这种方式配置的规则或监视器太多将导致 System Center 管理运行状况服务及其相关进程消耗更多资源。

解决方法

在代理上运行的此监视器的默认操作是重新启动 System Center 管理运行状况服务。 因为此恢复在代理上默认启用,无需用户操作。

如果你仍看到此监视器处于严重状态,System Center 管理运行状况服务可能没有正确地重新启动,或是此代理配置的操作帐户没有重新启动服务的正确权限。

如果是这种情况,请启动 System Center 管理运行状况服务窗口服务。

知识库文章 968760 中提供的修补程序可以更正导致此监视器更改为严重状态的某些问题。 请确保在使用更多内存的任何计算机上已经安装了 知识库文章 968760 (http://go.microsoft.com/fwlink/?LinkId=196234) 中的修补程序。

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Agent.HealthService.HandleCountThreshold" Accessibility="Public" Enabled="true" Target="SCLibrary!Microsoft.SystemCenter.HealthService" ParentMonitorID="Microsoft.SystemCenter.HealthService.ServiceStateRollup" Remotable="true" Priority="Normal" 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>HealthService</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>120</Frequency>
<NumSamples>5</NumSamples>
<Threshold>6000</Threshold>
<Direction>greater</Direction>
</Configuration>
</UnitMonitor>