CPU-Arthas-飙高-经常使用阿里-工具剖析 (cpuarm架构)
Arthas是阿里开源的诊断工具,相比JDK内置的诊断工具,要更兽性化,并且性能弱小,可以成功许多疑问的一键定位,而且可以一键反编译类检查源码,甚至是间接启动消费代码热修复,实如今一个工具内极速定位和修复疑问的一站式服务。
当天,我就带你经常使用Arthas定位一个CPU经常使用高的疑问,系统学习下这个工具的经常使用。
首先,下载并启动Arthas:
curl-O
启动后,间接找到咱们要排查的JVM进程,而后可以看到Arthas附加进程成功:
[INFO]arthas-bootversion:3.1.7[INFO]Foundexistingjavaprocess,pleasechooseoneandhitRETURN.*[1]:12707[2]:30724org.jetbrns.jps.cmdline.Launcher[3]:30725org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUlication[4]:24312sun.tools.jconsole.JConsole[5]:26328org.jetbrains.jps.cmdline.Launcher[6]:24106orgbeans.lib.profiler.server.ProfilerServer3[INFO]arthashome:/Users/zhuye/.arthas/lib/3.1.7/arthas[INFO]Trytoattachprocess30725[INFO]Attachprocess30725success.[INFO]arthas-clientconnect127.0.0.13658,---.,------.,--------.,--.,--.,---.,---./O|.--.''--..--'|'--'|/O'.-'|.-.||'--'.'|||.--.||.-.|`.`-.||||||||||||||||.-'|`--'`--'`--''--'`--'`--'`--'`--'`--'`-----'wiki
输入help命令,可以看到一切允许的命令列表。当天,咱们会用到dashboard、thread、jad、watch、ognl命令,来定位这个HighCPUApplication进程。你可以经过官网文档:,检查这些命令的完整引见:
图片
dashboard命令用于全体展现进程一切线程、内存、GC等状况,其输入如下:
图片
可以看到,CPU高并不是GC惹起的,占用CPU较多的线程有8个,其中7个是ForkJoinPool.commonPool。
ForkJoinPool.commonPool是并行流自动经常使用的线程池。
所以,此次CPU高的疑问,应该出如今某段并行流的代码上。
接上去,要检查最忙碌的线程在口头的线程栈,可以经常使用thread-n命令。这里,咱们检查下最忙的8个线程:
输入如下:
图片
可以看到,由于这些线程都在处置MD5的操作,所以占用了少量CPU资源。咱们宿愿剖析出代码中哪些逻辑或许会口头这个操作,所以须要从方法栈上找出咱们自己写的类,偏重点关注。
由于主线程也介入了ForkJoinPool的义务处置,因此咱们可以经过主线程的栈看到须要重点关注org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication类的doTask方法。
接上去,经常使用jad命令间接对HighCPUApplication类反编译:
jadorg.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplication
图片
你或许想到了,经过jad命令继续检查User类即可。这里由于是Demo,所以我没有给出很复杂的逻辑。在业务逻辑很复杂的代码中,判别逻辑无法能这么直白,咱们或许还须要剖析出doTask的慢会慢在什么入参上。
这时,咱们可以经常使用watch命令来观察方法入参。如下命令,示意须要监控耗时超越100毫秒的doTask方法的入参,并且输入入参,开展2层入参参数:
watchorg.geekbang.time.commonmistakes.troubleshootingtools.highcpu.HighCPUApplicationdoTask'{params}''#cost>100'-x2
可以看到,一切耗时较久的doTask方法的入参都是0,象征着User.ADMN_ID常量应该是0。
图片
最后,咱们经常使用ognl命令来运转一个表白式,间接查问User类的ADMIN_ID静态字段来验证是不是这样,失掉的结果果真是0:
[arthas@31126]$ognl'@org.geekbang.time.commonmistakes.troubleshootingtools.highcpu.User@ADMIN_ID'@Integer[0]
须要额外说明的是,由于monitor、trace、watch等命令是经过字节码增强技术来成功的,会在指定类的方法中拔出一些切面来成功数据统计和观测,因此诊断完结要口头shutdown来恢复类或方法字节码,而后分开Arthas。
在这个案例中,咱们经过Arthas工具排查了高CPU的疑问:
可见,经常使用Arthas来定位消费疑问基本用不着原始代码,也用不着经过参与日志来协助咱们剖析入参,一个工具即可成功定位疑问、剖析疑问的全套流程。
关于运行缺点剖析,除了阿里Arthas之外,还可以关注去哪儿的Bistoury:工具,其提供了可视化界面,并且可以针对多台机器启动治理,甚至提供了在线断点调试等性能,模拟IDE的调试体验。
![CPU](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
华硕周杰伦特别版笔记本为什么玩剑网三的时候CPU很高? 几乎就是95%的样子,有时直接飙到100卡住
原因一、硬件方面电脑cpu占用过高,其实硬件方面决定着较大的因素,如果电脑配置太过老旧,那么随便开几个软件就容易导致CPU占用率过高,不管你怎么优化系统,这个问题都无法解决。
所以这种情况只能通过升级硬件解决。
原因二、软件方面软件方面涉及到的是系统问题,比如系统过于臃肿,开启过多程序,以及中病毒都会造成CPU占用率过高。
所以解决办法主要通过查杀病毒、系统优化、关闭开机启动项、避免开启太多程序等等。
如果是电脑中病毒的情况下,恶意程序会大量占用CPU资源,这种情况就很容易出现CPU使用率过高。
因此如果发现CPU占用过高,首先应该检查电脑是否中病毒了,运用杀毒软件进行全面查杀。
内存使用少CPU使用高怎么回事
先从内存与CPU的区别来说:CPU,即中央处理器,是计算机的核心部件。
内存也是计算机的主要部件,作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
CPU处理数据时,先通过CPU内的高速缓存来进行运算,这样可以提高命中率和读取速度,高速缓存也就是Cache,其次才是内存,硬盘等存储介质。
简单的说,CPU是处理数据的,内存是存储数据的。
就好比保管员和仓库,保管员管理调度仓库,而仓库只是临时提供货物存储。
再来说说CPU使用率过高的问题:1.电脑运行了大型的程序,例如大型的游戏,3D网络游戏等等,这种情况通常是正常的,这类程序需要较多的CPU资源,网友将大型的程序退出一段时间,CPU使用率基本上就恢复正常了;2.电脑如果中毒,例如下载者类的病毒,这类病毒会在后台下载大量的恶意程序运行,试想一下,电脑突然运行了几十个程序,CPU使用率必然会突然飙升,用户会觉得很卡。
这种情况就需要大家下载杀毒软件或者木马专杀工具进行扫描,清除完病毒、木马之后CPU使用率就会降低了;资源被浏览器占用导致CPU使用率高,现在的浏览器大多是多页面显示方式,这样就会导致浏览器占用过多的内存和CPU资源,网友在发现CPU使用率过高的时候可以检查一下是否是浏览器捣鬼,可以将浏览器退出一段时间看看;4.电脑软件兼容性不够,有时候网友看视频时会突然卡一段时间,然后电脑就奔溃了,这里有可能是电脑显卡驱动兼容性存在问题,也有可能是视频文件过大,电脑渲染不了,从而出现了CPU使用率过高的问题。
CPU使用率高怎么办通过上面的总结,大家应该都差不多了解了CPU使用率过高都有哪些原因,接下来我们就针对这些原因采取相应的措施:1.在运行大型程序之前,查看电脑配置是否满足运行该程序的最低配置,如果确实是电脑配置不行的话,那么就建议网友将电脑硬件进行升级了;2.下载杀毒软件或者木马专杀对电脑进行保护,大家可以使用占用资源小的一些安全工具,例如巨盾,巨盾采用脚本引擎可以极大的释放系统资源,不会使得电脑CPU使用率过高;3.网友在使用浏览器时尽量选择一些用户群体比较多的浏览器,一些非主流的浏览器就不必使用了,因为小众的浏览器在兼容性,操作性等方面还是有些缺陷的,系统优化也不完善,所以建议大家使用主流的浏览器,避免出现CPU使用率高怎么办的问题;4.定期更新电脑各种驱动,大家可以使用驱动精灵等工具自动更新电脑上的驱动,保持电脑驱动处于最新状态,减少CPU出现100%的概率。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。