Hello Bhasker!
Greetings.
fastThread tool uses its heuristics algorithms and shows the potential (but not exact) threads are consuming high cpu in the section 'CPU consuming threads'. You want to refer to see the threads pointed in this 'CPU consuming threads' section.
As per ‘CPU consuming threads’ section, following are the potential threads which might consume high CPU:
sonOutThreadPool: 10 thread:
stackTrace:
at com/ibm/io/async/AsyncLibrary.aio_getioev2(Native Method)
at com/ibm/io/async/AsyncLibrary.getCompletionData2(AsyncLibrary.java:631(Compiled Code))
at com/ibm/io/async/ResultHandler.runEventProcessingLoop(ResultHandler.java:542(Compiled Code))
at com/ibm/io/async/ResultHandler$2.run(ResultHandler.java:905(Compiled Code))
at com/ibm/ws/util/ThreadPool$Worker.run(ThreadPool.java:1892(Compiled Code))
NOTE: Findings of 'CPU consuming Threads' section may not be accurate.
Inorder to accurately point the lines of code causing the CPU spike, you need to analyze not only thread dumps but also 'top -H -p {PID}' command output, where {PID} is your Java application's process Id which is experiencing CPU spike. When you issue this ‘top’ command with given arguments, it will list all the threads running in the application and amount of CPU each one of the thread consume. Once you have both the data, you can identify high CPU consuming thread and lines of code they are executing. You can either capture these artifacts and analyze them manually, or use the 14 day trial version of yCrash tool. yCrash tool automatically captures application-level data (thread dump, heap dump, Garbage Collection log) and system-level data (netstat, vmstat, iostat, top, top -H, dmesg,...). It marries these two datasets and generates an instant root cause analysis report pointing out exact line of code causing the CPU spike. Here is more information on how to diagnose high CPU spike.
Edit your Comment