Some process are really slow, but not blocking. The server OS shows high CPU utilization from the AEM java process.
There are many possible causes for high CPU utilization, here are a few:
- Inefficient application code
- Traversal of large content structures
- High application memory utilization causing a lot of time spent in JVM Garbage Collection
Using the built-in CPU profiler
A simple CPU profiling tool is included in AEM 6.x.
- Open this URL: http://aem-host:port/system/console/profiler
- Expand "Options"
- Set the "Sample Interval (ms)" (or use the default)
- Set the "Stack trace depth" (recommended value : at least 50)
- Click "Start Collecting"
- Wait 3-10 minutes to collect data while CPU utilization is high
- Click "Stop" to collect the data (output is shown on the same page)
The profiler collects stack traces of running threads (threads actively taking CPU time). While collecting the stacks, it finds duplicate traces and sorts them from most common to least common.
CQ 5.6.1, AEM 6.x