简体   繁体   中英

how to identify the thread which is causing JVM CPU utilization is reaching to 90 to 100% in Jboss java application?

Our java application(ear) was deployed in J Boss+Linux and We are using mod clusters and have total 8 JV M's or j Boss instances.

We could see that daily one or two of JV M's CPU utilization is reaching to 100% and making application is very slow.

I have tried to get the thread dump by using the j stack and kill Linux commands to identify the causing thread.But unfortunately JV M is not responding if CPU utilization is reaches more than 60% for these commands.

is there any easiest way to identify the thread/method/class name which is causing the issues to increase the CPU utilization?

Could anyone provide the solution asap please?

To get the stack from a hung process use jstack -F <PID> , see oracle docs

Other solutions can be found here

As you wrote the JVM is not responsive and thus there is no way to get details about executed classes/methods. Thus the answer to "is there any easiest way" would be "NO". ;-)

But maybe it can help you or anyone else (questions was asked 2.5 years ago) what I would do in this case:

  1. Identify the linux thread (I use the small linux tool "threadcpu" for this).
  2. Do an strace on the found PID - maybe with longer strings ("-s 1024").

This could give you a hint which class/method is currently executed. If you see eg many hundreds SQL queries only used in one single class then this could help you a lot.

"threadcpu" can be downloaded from here: tuxad.com

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM