IT袋

当前位置:主页 > 经验教程 > 硬件教程 >

cpu100%如何排查

cpu100%如何排查 如何排查CPU使用率达到100%的问题(2)

时间:2024-03-18 15:00:38 来源:IT袋 作者:马勇
导读:cpu100%如何排查,然后,我么能看到了我们需要的线程名称、线程状态,哪个方法的哪一行代码消耗了最多的 CPU 都很清楚了。 第二种,Arthas Arthas 是阿里开源的一款线上监

cpu100%如何排查

cpu100%如何排查

然后,我么能看到了我们需要的线程名称、线程状态,哪个方法的哪一行代码消耗了最多的 CPU 都很清楚了。

第二种,Arthas

Arthas 是阿里开源的一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

用 Arthas 查找占用 CPU 最高的方法只是一个开胃小菜,除此之外,它最大的用途是在不改代码、不重启服务的情况下对程序进行动态监控。如果你碰到了线上诡异问题,一定要用 Arthas 尝试找一找问题,开阔一下眼界。

好了,更多的功能到官网 https://arthas.aliyun.com/ 了解吧,接下来就将一下如何用 Arthas 达到前面用 jstack 同样的目的。

安装Arthas

当然了,要使用 Arthas,你就必须先把它安装到你的目标服务器上,也就是那个出问题的Java服务所在的服务器。

下载 jar 包

curl -O https://arthas.aliyun.com/arthas-boot.jar

启动 Arthas 服务

java -jar arthas-boot.jar

启动之后,会列出当前这台服务器上的所有 Java 进程,然后你选择你要排查的那个服务即可。

cpu100%如何排查

然后出现arthas@之后表示已经启动,并成功 attach 到目标进程上 。

然后可以输入命令dashboard看一下实时面板,默认 5 秒刷新一次,在这个面板上能够看到线程、内存堆栈、GC和Runtime的基本信息。如果你用过 VisualVM 的话,就和那个基本一样。

cpu100%如何排查

好了,开始用 Arthas 找到导致 CPU 负载过高的问题吧。

找到占用CPU最高的进程

第一步,其实还是用top命令找到占用 CPU 最高的进程,也就是 Arthas 启动时选择 attach 的那个 Java 进程。

然后java -jar arthas-boot.jar启动Arthas,并attach 。

找到占用CPU最高的线程

执行thread命令,这个命令会显示所有线程的信息,并且把CPU使用率高的线程排在前面。

这样,一眼就看出来了,第一个线程的 CPU 使用率高达 99% 了,就是它。

相关阅读