WebSphere Application Server & Liberty

 View Only

 JVM WAS 100% CPU on Power i

Jose Luis Nebril's profile image
Jose Luis Nebril posted Wed May 14, 2025 01:27 AM

Hello,

We are running an application under WebSphere Application Server (WAS) that occasionally consumes 100% of the AS/400 CPU.

Is there any way to identify which JSPs are being executed by WAS at a specific point in time? 

Best regars

Hermann Huebler's profile image
Hermann Huebler IBM Champion

Hello Jose,

well - to determine what's currently running in the JVM you can collect (a series of) Thread-Dumps (javacore's) for the JVM and then compare the running threads and check which are still the same over the series of collected dumps.  Furthermore - depending on the JVM you are using - the javacore of the IBM JVM (at least on Linux / AIX) lists the CPU usage of the Thread. in the `3XMCPUTIME`  record of the javacore,

This looks like:

3XMCPUTIME               CPU usage total: 14.377890000 secs, user: 13.274572000 secs, system: 1.103318000 secs, current category="Application"

So you can find out - by comparing the CPU usage of each thread in each javacore - which threads consume lots of CPU and what their call-stack is. The IBM TMDA tool can assist you in comparing javacore files. 

Additionally I'd recommend to check the verbose GC log files to determine if these high CPU usage is caused by heavy GC activity. The GCMV tool or the Eclipse plugin for GCMV can help you to determine ge GC behaviour at the time of the high CPU. 

As a last resort you can open a case with IBM support and provide the respective Must-Gather documentation for "Performance, hang, or high CPU" whereby I don't see a section for iSeries there. So you might have to ask support for the required must-gather on iSeries. 

Note: The IBM Support Assistant provides a suire of tools for problem analysis in case you want to check what other tools are available and probably helpful in your scenario.