Average usage of the CPU in a host system; the value shows how intensively the CPU is used and how much processing capacity is still available
CPU Utilization is often considered to be one of the few Key Indicators that lets to understands how a system is performing and utilized. While high CPU Utilization does not necessarily mean that there is a problem, the situations when the value approaches 100% does indicate that the system (an application server in our case) is saturated and can’t handle more load. In such dynamic environment as SAP this is generally not a good thing as application servers need some spare capacity for system functions etc
The best practice indicates that the CPU Utilization of above 97% are problematic. However in some applications, you might consider even the lower value as the threshold to generate the alert.
There are many reasons for the CPU utilization to spike. Please use standard SAP Tools like SM50 etc to find the root cause of the problem
The resolution will depend on the cause, some of the actions may include changing the load-balancing parameters of the Message Server, switching Operation Mode or provisioning additional application server
N/A
Please refer to SAP Documentations and Notes
Target | ozsoft.sap.AppServer | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | Operations | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | ozsoft.sap.CCMSMetricMonitorType2 | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="ozsoft.sap.Monitor.AppServer.CPU.Utilization" Accessibility="Public" Enabled="true" Target="ozsoft.sap.AppServer" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="ozsoft.sap.CCMSMetricMonitorType2" ConfirmDelivery="false">
<Category>Operations</Category>
<AlertSettings AlertMessage="ozsoft.sap.Monitor.AppServer.CPU.Utilization.AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/ObjectName$</AlertParameter1>
<AlertParameter2>$Data/Context/CounterName$</AlertParameter2>
<AlertParameter3>$Data/Context/Value$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Under" MonitorTypeStateID="SDKMetricUnderLowThreshold" HealthState="Success"/>
<OperationalState ID="Between" MonitorTypeStateID="SDKMetricUnderHighOverLowThreshold" HealthState="Warning"/>
<OperationalState ID="Over" MonitorTypeStateID="SDKMetricOverHighThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<CounterName>CPU_Utilization</CounterName>
<ObjectName>CPU</ObjectName>
<Frequency>60</Frequency>
<HighThreshold>95</HighThreshold>
<LowThreshold>85</LowThreshold>
</Configuration>
</UnitMonitor>