(已弃用)监视主机专用字节句柄计数

Microsoft.SystemCenter.ManagementServer.MonitoringHost.PrivateBytesThreshold (Rule)

当“监视主机”进程超过 Process\Private Bytes 阈值时,重新启动运行状况服务。

Knowledge Base article:

摘要

此规则默认情况下处于禁用状态,因为它已被监视器所取代。

此规则测量 MonitoringHost.exe 进程所有实例的 Process\Private Bytes 使用率。 如果超过了所配置的阈值,将生成警报。

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

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

专用字节阈值

代理

100 MB

管理服务器

1,500 MB

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

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

重新启动响应行为

代理

已启用

管理服务器

无重新启动响应

原因

可能原因可概述为:

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

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

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

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

另一个原因可能是一个或多个规则和监视器不符合某些最佳方案。 一个例子是性能计数器规则尝试每 1 秒收集一次性能数据。 以这种方式配置的规则或监视器太多将导致 monitoring host.exe 进程消耗更多资源。

解决方法

运行在管理服务器上的此规则的默认操作是生成警报。

如果认为对于此代理执行的监视数量而言资源使用率是适当的,你可以替代阈值或禁用发现。

如果 System Center 管理运行状况服务及其相关联的 MonitoringHost.exe 进程仍然消耗太多资源,你可以重新启动 System Center 管理运行状况服务 Windows 服务以缓解此问题。

Element properties:

TargetMicrosoft.SystemCenter.ManagementServer
CategoryMaintenance
EnabledFalse
Instance NameProcess
Counter NamePrivate Bytes
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
监视主机专用字节阈值警报消息(管理服务器)
监视主机专用字节阈值警报消息

Member Modules:

ID Module Type TypeId RunAs 
DataSource DataSource System.Performance.DataProvider Default
CDAveragerThreshold ConditionDetection System.Performance.AverageThresholdCondition Default
Alert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SystemCenter.ManagementServer.MonitoringHost.PrivateBytesThreshold" 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>Private Bytes</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName>MonitoringHost*</InstanceName>
<Frequency>120</Frequency>
</DataSource>
</DataSources>
<ConditionDetection ID="CDAveragerThreshold" TypeID="Performance!System.Performance.AverageThresholdCondition">
<NumSamples>5</NumSamples>
<Threshold>1610612736</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.PrivateBytesThreshold.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>