此监视器检查 MonitoringHost.exe 进程的平均进程\专用字节数计数器是否超出配置的阈值。当达到此阈值后,将自动触发“恢复”以重新启动 Health Service。
此规则测量 MonitoringHost.exe 进程所有实例的 Process\Private Bytes 使用率。如果超出了配置的阈值,响应操作将尝试重新启动运行状况服务以确保它不会继续过度占用计算机。
有不同的阈值,具体取决于运行状况服务配置为执行的角色。以下汇总了默认阈值:
运行状况服务角色 | 专用字节阈值 |
代理 | 100 MB |
管理服务器 | 1,500 MB |
以下是尝试重新启动运行状况服务的响应的配置:
运行状况服务角色 | 重新启动响应行为 |
代理 | 已启用 |
管理服务器 | 无重新启动响应 |
可能原因可概述为:
从此运行状况服务配置的所有管理包加载了太多规则和监视器。 |
配置错误的规则或监视器收集了太多数据或处理了太多数据(例如性能计数器收集规则每 1 秒收集一次数据) |
这可能是运行很多管理包的运行状况服务引起的。每个管理包可能有很多使用少量资源的监视。由于很多管理包添加了数千条规则和监视器,每个 MonitoringHost.exe 实例可能开始消耗更多资源。
根据运行状况服务正执行的监视类型,此运行状况服务预期可能会出现这种情况。
另一个原因可能是一个或多个规则和监视器不符合某些最佳方案。一个例子是性能计数器规则尝试每 1 秒收集一次性能数据。以这种方式配置的规则或监视器太多将导致 MonitoringHoste.exe 进程消耗更多资源。
在代理上运行的此规则的默认操作是重新启动运行状况服务。因为此恢复在代理上默认启用,无需用户操作。
请注意,如果此代理配置的操作帐户没有重新启动服务的正确权限,运行状况服务可能无法正确地重新启动。
如果是这种情况,请启动 Windows 服务运行状况服务。
如果认为对于此代理执行的监视数量而言资源使用率是适当的,您可以替代阈值或禁用规则。
Target | Microsoft.SystemCenter.Agent |
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 | False |
Accessibility | Internal |
RunAs | Default |
<UnitMonitor ID="Microsoft.SystemCenter.Agent.MonitoringHost.PrivateBytesThreshold" Accessibility="Internal" Enabled="true" Target="SCLibrary!Microsoft.SystemCenter.Agent" ParentMonitorID="Microsoft.SystemCenter.HealthService.ServiceStateRollup" Remotable="false" Priority="High" TypeID="Microsoft.SystemCenter.Agent.Performance.AveragerThresholdWithSingleSampleSuccessState" ConfirmDelivery="false">
<Category>StateCollection</Category>
<OperationalStates>
<OperationalState ID="PrivateBytesUnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="PrivateBytesOverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ObjectName>Process</ObjectName>
<CounterName>Private Bytes</CounterName>
<InstanceName>MonitoringHost*</InstanceName>
<Frequency>120</Frequency>
<NumSamples>5</NumSamples>
<Threshold>104857600</Threshold>
</Configuration>
</UnitMonitor>