线上cpu使用率过高解决方案
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识。 一、通过top命令定位占用cpu高的进程 执行top命令得到以下结果: top命令查询结果 通过上图可以明显看出进程PID41843占用cpu过高,明显存在问题,定位到了进程id。当然如果你想只观察进程PID41843的CPU和内存以及负载情况,可以使用以下命令 top -p 41843 结果如下: top -p 41843命令执行结果 这里顺便解释下上图各个参数的意义,有利于读者更好的排查问题。 1.第一行是任务队列信息 top - 14:06:34 up 537 days, 6 min, 6 users, load average: 0.41, 0.45, 0.43 2.第二行为进程的信息 3.第三行为cpu信息 4.第四、五行为内存信息。 内容如下: 二、通过top命令定位问题进程中每个线程占用cpu情况 通过问题进程中每个线程占用cpu情况使用可以使用如下命令: top -p 41843 -H 查看进程PID41843的每一个线程占用CPU情况,如图。 top -p 41843 -H的执行结果 由上图明显可以发现,线程PID41892CPU占用率最高,接下来定位该线程的代码是否出现异常导致cpu占用过高。 三、通过jstack