电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

性能分析--JVM--分析CPU

来源:金蝶云社区作者:金蝶2024-09-235

性能分析--JVM--分析CPU

1 简介

在JVM性能分析内存篇“苍穹性能分析之JVM性能分析内存篇”中,我们主要讲了JVM的内存结构,如何分析Full GC和内存OOM问题等。而除了内存,苍穹应用的性能和CPU的关系也非常紧密,CPU使用率的高低会影响苍穹性能的好坏。因此,本篇文章为大家讲讲Java程序CPU相关的性能分析方法。


一般而言,分析Java程序CPU问题的步骤为:首先,通过监控发现CPU问题,然后借助工具分析哪些线程占用大量CPU资源,再做相应的问题追踪


2 发现CPU问题

监控Java程序CPU使用率有两种方法。一个是通过云平台查看CPU监控,一个是进入容器以后通过Linx命令查看CPU使用情况。


2.1 苍穹云平台

在苍穹云平台的【服务监控】中查看,如下图所示:



服务监控界面,点击上图中某个具体实例的名称,即可查看单个容器的监控情况,如下图所示:



一般情况下,我们分配给每个容器两个CPU。从【服务监控】界面可以看到有一个容器的CPU使用率超过94.41%(CPU的整体平均使用率),出现红色告警,这表示CPU资源使用出现瓶颈。


2.2 容器平台

 通过容器平台链接进入容器,输入命令"top –c"直接查看Java整体CPU使用情况。在容器规格为两个CPU的情况下,如果CPU使用率超过100%就说明CPU承载的压力较大。



然后通过“top –Hp 1”命令查看每个Java线程使用CPU情况。

top –Hp 1  
//-H:显示每个Java线程CPU使用情况
//-p:指定进程号,一般容器中1号为Java程序的进程号


命令执行结果如下图所示:



这里注意观察是否有线程的CPU使用超过90%,是一个还是多个线程。此外,如果PID小于100,一般是Java的gc线程在运行。


3 分析CPU问题

当CPU使用率过高时,我们应进一步查验该问题是由什么代码引起的,这里主要介绍两种方法。一个是jdk本身自带的jstack工具,一个是通过arthas工具。


3.1 Jstack工具

使用Java原生的工具Jstack工具,命令如下:

top -H -p 1 -n 5 -b | grep "top -" -A 16 > ss1.log  && /jdk/bin/jstack -l  1 >> ss1.log
//-n 5 信息更新次数
//-b 以非交互和非全屏模式运行


该命令的意思为收集5次top命令的CPU使用情况,然后导出java线程堆栈。命令执行效果如下图所示:



从上图可看出PID为7524的线程的CPU使用率比较高。我们通过“printf '%x\n

性能分析--JVM--分析CPU

1 简介在JVM性能分析内存篇“苍穹性能分析之JVM性能分析内存篇”中,我们主要讲了JVM的内存结构,如何分析Full GC和内存OOM问题等。而除...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信