当前位置: 首页>前端>正文

ajhua监控接入国际级联接入 ajhua监控 官网

前言

当我们在做线上压测时,有个问题就是很多工具在线上不方便用,如jprofiler,因为线上环境比较谨慎,也不太方面加一堆配置参数。那么这里我们推荐使用Arthas这个工具

Arthas工具介绍

Arthas是阿里巴巴开源的性能分析神器。Arthas能为你做什么事情呢?我们来看一下官网的介绍。官网地址: https://alibaba.github.io/arthas/index.html.

当你遇到一下类似的问题而束手无策的时候,Arthas可以帮你解决:

  1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
  2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
  3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
  4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
  5. 是否有一个全局视角来查看系统运行状况?
  6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
5. 是否有一个全局视角来查看系统运行状况?
6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载Arthas

可以直接在 Linux 上通过命令下载

wget https://alibaba.github.io/arthas/arthas-boot.jar

或者也可以再浏览器直接下载jar包,等待下载成功后,上传到 Linux 服务器上。

https://alibaba.github.io/arthas/arthas-boot.jar

启动 arthas 工具

主要使用arthas需要安装jdk环境。

安装成功之后,执行如下命令启动 arthas

java -jar arthas-boot.jar

执行成功后,arthas 提供了一种命令行方式的交互方式,arthas 会检测当前服务器上的

Java 进程,并将进程列表展示出来,用户输入对应的编号(1、2、3、4…)进行选择,然

后回车(见红色框,进程[2]就是 tomcat 进程)。

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_jar,第1张

第一次使用arthas需要自动下载一些依赖包,等待下载完成,就会进入到arthas提供的命令行界面。

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_ajhua监控接入国际级联接入_02,第2张

整体dashboard数据在arthas的命令行界面,输入 dashboard

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_github_03,第3张

现在我们可以看到一个实时的监控界面。我们可以在第一栏看到线程的状态、优先级以及占用哪个线程占用的cpu比较高。

那么我们可以通过这个图标看到有没有线程当前处于阻塞、或者TIME_WATING。有时候出现cpu比较高的场景,我们可以通过这里看到具体是哪一个线程占用的cpu比较高。我们找到这个线程,就可以通过 jstat查看到该进程当前所在做的事情。

但是大家这里需要注意的是,这里的cpu并不是占用了我们操作系统多少cpu使用率,这里指的是我们这个进程占了多少cpu,其中某一个线程占了该进程的百分之多少。

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_jar_04,第4张

第二个区域展示的内存,我们可以看到堆内存总共使用了多少、一共有多少内存、最大内存是多少,以及内存占用的百分比情况。

所以这个dashboard可以帮我们检测线程和内存的总体使用情况。

查看线程监控

我们前面 dashboard 只是看了线程的大体情况,如果说我们想要看线程的具体情况,应该怎么看呢?

Arthas 提供了如下参数,可以看到线程的具体信息。

常用参数:
输入thread会显示所有线程的状态信息 
输入thread -n 3会显示当前最忙的3个线程,可以用来排查线程CPU消耗 
输入thread -b 会显示当前处于BLOCKED状态的线程,可以排查线程锁的问题

thread

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_ajhua监控接入国际级联接入_05,第5张

thread -n 3这个命令可以把占用cpu消耗最高的线程的堆栈信息打印出来,可以用来排查线程CPU消耗

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_ajhua监控接入国际级联接入_06,第6张

thread -b这个命令可以抓到当前处于BLOCKED状态的线程,可以排查线程锁的问题 ,因为目前我没有阻塞的线程,所有没有。

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_jar_07,第7张

jvm监控输入jvm,查看jvm详细的性能数据

ajhua监控接入国际级联接入 ajhua监控 官网,ajhua监控接入国际级联接入 ajhua监控 官网_jar_08,第8张

函数耗时监控

通常说一个接口性能不好,其实就是接口响应时间比较长造成的,具体代码中哪个函数耗时比较长呢?可以使用trace功能来监控一下

trace 类名 函数

这个命令可以看到压测具体那一个函数耗时时间最长,接下来我们就可以去对代码进行进一步分析,然后再进行优化。



https://www.xamrdz.com/web/2my1934866.html

相关文章: