将 Processor\\% Processor Time\_Total 和 System\Processor Queue Length 性能计数器相关联,监视此服务器的总 CPU 使用率。
系统处理器的 CPU 利用率 (Processor\% Processor Time\_Total and System Queue Length) 超出了阈值。一旦超出了阈值,总体系统性能将大幅降低,这将造成 Windows Server 2008 操作系统中出现较差操作系统和应用程序性能。
Total CPU Utilization 监视例程是一个可配置度高的解决方案,它使操作员能够设置 System\Processor Queue 和 Processor\% Processor Time\_Total 性能计数器的阈值。当两个计数器的值超出已定义的几个连续采样的阈值时,监视器的状态就会更改。更改状态之前,到达阈值后必须采样的连续采样的数目也是可配置的。
Total CPU Utilization 监视例程的默认阈值有:
参数 | 默认值 |
CPU 队列长度阈值 | 15 |
CPU 百分比阈值 | 95 |
样本数 | 3 |
请注意,可使用“替代”来更改上面定义的任何阈值。
由于以下任一情况,导致计算机连续承受繁重的负荷:
安装在计算机上的应用程序集的资源要求超过了计算机的硬件配置的能力。
随着时间的推移,对计算机资源的需求增加,而计算机的硬件配置已不再满足不断增加的需求。
计算机上运行的应用程序可能已经进入不正常状态,现在需要大量系统资源。
要查看与处理器相关的性能计数器,可使用以下视图:
启动处理器性能视图
若要解决此问题,管理员可以执行下列任务:
1.为在服务器上运行的每个进程评估 % Processor Utilization 计数器。可以通过使用任务管理器或性能监视管理单元执行此操作。确定哪个(些)进程消耗最多的资源,并在一段时间内监视这些进程以确定它们是否可能返回到正常的性能范围。如果不能,则应该执行附加的应用程序特定诊断,以确定解决此问题的最佳方式。
2.如果确定客户端负荷随着时间的变化而增加,计算机的确不再满足要求,则执行其他性能监视过程,以确定基本硬件升级是否可以使计算机返回到最佳的性能范围。
3.如果已确定应用程序进入不正常状态,则可能由于产品缺陷,或许需要重新启动该应用程序。如果问题仍然存在,你可能需要联系应用程序供应商。
Target | Microsoft.Windows.Server.2008.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Windows.Server.2008.CPUUtilization.Monitortype | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Server.2008.OperatingSystem.TotalCPUUtilization" Accessibility="Public" Enabled="true" Target="Server2008!Microsoft.Windows.Server.2008.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.Windows.Server.2008.CPUUtilization.Monitortype" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2008.OperatingSystem.TotalCPUUtilization.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='PctUsage']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='QueueLength']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="CPUUtilizationHigh" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="CPUUtilizationNormal" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<TargetComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</TargetComputerName>
<CPUPercentageThreshold>95</CPUPercentageThreshold>
<CPUQueueLengthThreshold>15</CPUQueueLengthThreshold>
<NumSamples>3</NumSamples>
<CounterName>% Processor Time</CounterName>
<ObjectName>Processor</ObjectName>
<InstanceName>_Total</InstanceName>
<AllInstances>false</AllInstances>
</Configuration>
</UnitMonitor>