苏州出名的网站公司,公司网络推广网站,南宁百度 - 网站正在建设中,秦皇岛建设管理中心网站Arthas的使用 Arthas常用命令Arthas的安装Linux压测工具Apache Bench安装火焰图的使用火焰图如何分析火焰图的互动 Arthas常用命令
help #xff1a;查看所有命令dashboard #xff1a;仪表板#xff0c;查看线程的CPU信息等heapdump #xff1a;不同类对象占用内存比重查看所有命令dashboard 仪表板查看线程的CPU信息等heapdump 不同类对象占用内存比重产生堆转储文件thread 线程信息thread -h 查看thread相关命令thread -b 查找死锁watch 类名 方法名 returnObj 查看方法的返回值jvm 查看java进程相关参数信息,用哪种垃圾收集器等jad 反编译可以查看你所依赖的jar包定位问题版本是否引错redefine 热替换线上的项目不用停本地改了之后redefine就能变成想要的结果trace 类名 方法名 单机的链路追踪其他命令参考命令列表
Arthas的安装
我使用的是Linux系统下的快速安装执行命令curl -L https://arthas.aliyun.com/install.sh | sh 安装默认会安装到当前目录下执行./as.sh 进入交互界面./就是当前目录如果执行此命令时出现Error: no available java process to attach. 就是没有运行的java程序我们只需要运行一个java程序即可
Linux压测工具Apache Bench安装
Linux压测工具Apache Bench的使用安装apacheyum install httpd ,中途输入y即可启动apachesystemctl start httpd.service安装http服务yum install httpd查看http服务版本httpd -version启动http服务service httpd start查看http服务状态service httpd status
火焰图的使用
步骤一在系统中启动一个Java项目并且是一个不会马上停止的项目我是将本地的SpringBoot项目打成jar包通过java -jar运行起来的注意要打包的项目中pom.yml要加上打包插件 buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build点击install或package 都可以打包后的jar包会在target目录下我们将这个jar包放到虚拟机中切换到jar包放置的目录执行java -jar 包名即可. 执行后的效果如图
步骤二不能关闭步骤一的窗口新打开一个窗口在arthas的安装目录下执行./as.sh进入交互界面选择刚启动的java进行输入进行对应的数字让arthas进行监控后开启火焰图 profiler start等压测执行一段时间后步骤三关闭火焰图 profiler stop stop后会生成一个火焰图的页面 打开这个html就是火焰图 步骤三新开一个窗口在apache bench的安装目录下进行压测模拟,执行ab -n 20000 -c 200 http://localhost:8080/ ab 就是apache bench -n 请求的总次数 -c 并发用户数 http://localhost:8080/就是访问的这个程序地址 火焰图如何分析
参考https://blog.csdn.net/qq_43097201/article/details/125683217
颜色 绿色Java代码 黄色JVMC代码 红色用户态C代码 橙色内核态C代码x-y轴 x轴代表的不是时间而是采样总量或占用CPU的时间 y轴代表方法的调用栈深度倘若方法调用得越多火焰越高每一层代表一个方法顶部的栈就是当前正在执行的方法栈宽含义CPU时间 宽度可以理解为CPU采样率的占比越宽代表当前栈在采样数中占比高其可能为三种含义 代表该函数在程序中运行所占用的CPU时间。 代表该函数被其他函数调用的次数。 代表该函数在程序中的复杂度也即调用该函数的层数。平顶现象一定要格外注意 平顶现象是由于当前程序的采样数在总采样数中占用过高导致的出现这种现象需要特意关注一下程序具体的调用栈采样比例占用率过高即代表方法在CPU中的占用率过高
火焰图的互动
鼠标悬浮鼠标悬浮会显示所在层的方法名、采样次数、采样的占比双击可以放大该方法所在层CtrlF搜索匹配的方法高亮显示【注意】如果你的项目调用了其他框架则不会显示你的方法所以火焰图其实分析不出个啥