我有一个Java应用程序(基于Web),有时显示几个小时的CPU使用率很高(几乎90%)。Linux TOP命令显示了这一点。重新启动应用程序后,问题消失了。
TOP
因此要调查 :
我使用线程转储来查找线程在做什么。发现多个线程处于'RUNNABLE'状态,一些处于其他状态。在进行重复的线程转储时,我确实看到了一些始终处于'RUNNABLE'状态的线程。因此,他们似乎是罪魁祸首。
'RUNNABLE'
但是我无法确定是哪个线程正在占用CPU或进入了无限循环(从而导致较高的CPU使用率)。
日志不一定有帮助,因为有问题的代码可能未记录任何内容。
我该如何调查-应用程序或线程的哪个部分导致CPU使用率高? -还有其他想法吗?
如果探查并不适用于您的设置,您可以尝试找出以下步骤线程这个职位。
基本上,分三个步骤:
top -H