快速入门:attach 一个进程 | 学习笔记

简介: 快速学习快速入门:attach 一个进程

开发者学堂课程【线上问题排查利器 Alibaba Arthas(上)快速入门:attach 一个进程学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/746/detail/13186


快速入门:attach 的一个进程


内容介绍:

一、简述 attach 的快速入门

二、具体操作步骤

三、课程小结


一、简述 attach 的快速入门

Attach 中文意为粘附,首先,执行一个jar 包,此jar 包就是一会要粘附或者诊断的jar包,而且在 jar 包的执行过程中,程序不能进行退出,否则将无法诊断arthas,该服务器一般都为24小时可登录状态,那么此时该执行的加码进程是没有退出的,所以我们要先执行这个 jar 包。Jar 包在当前例子实际上为一个死循环,由此并不会退出。然后,通过arthas 来attack 此程序。第三步骤为进行几种常用的命令操作。


二、具体操作步骤

1.准备代码。

此代码不需要用户进行手动输入或复制。注意此代码的内容并不是重点,因为该代码仅为要进行诊断的一个代码,至于代码内容为何不必理会。一个简单的Java 程序,每隔一秒钟随机生成一个整数,对该整数进行质因数的分解,并打印出分解结果。Java 程序中,一个类为demo,另一个为mathgame。

image.png

其中还包含一个统计变量 illegalArgumentCount,该变量是用来统计程序生成不合法的数的个数,因为程序生成的数可能有正负数,负数即为不合法数。在 Java 程序中的 while (true)为一个防止程序退出的死循环。game.(run) 调用run() 进行分解质因数。注意此处 game.(run) 非开启一个线程,仍只是一个线程。run() 用处为随机产生一个整数,有可能为正,有可能为负,然后进行调用方法进行质因数的分解,分解后进行结果的打印。如果得数小于0,则程序会产生异常抛出,表面此操作为不合法并统计不合法数的个数。如果可分解,则直接打印结果。

再次说明,代码不需要用户自主编辑。在安装好 arthas 后,例如进入 arthas 目录,在 level 中进入下一节,在程序下面带了一个 demo.jar 文件,其实刚刚如上提及的 mathgame 就是此 jar 类,所以用户不需要自己再去编译与打包,程序已自动已经为用户打包完成,只需用户直接运行即可。

image.png

2.启动 demo

首先,下载已经打包好的arthas-demo.jar 或者用户也可以自己再去单独下载,但是只要装好了arthas,程序就已经带了jar 包,那么接下来就进行执行操作。首先输入java-jar arthas-demo.jar,程序开始执行。程序运行过程中合法的输出,非法的进行个数统计。每一秒进行一次计算,程序为一个死循环。建议同时打开三个窗口,分别为demo、arthas 与看运行结果的程序。

image.png

3.启动 arthas

因为arthas-demo.jar. 进程新开了一个窗口,所以另开一个命令窗口执行arthas-boot.jar,启动arthas-boot.jar,用Java-jar arthas-boot.jar 此时,程序就会检测Java 虚拟机当中所有在运行的进程,程序找到arthas-demo.jar,此时输入1,然后按回车键,此时即可粘附成功。

image.png

如果粘附成功,在arthas-demo.jar 那个窗口会出现日志记录的信息并记录在目录中。如果端口号被占用,也可以通过java-jar arthas-boot.jar﹉telnet-port 9998﹉http-port-1命令换成另一个端口号执行。

4.通过浏览器执行 arthas

Arthas 目前支持Web Console,用户在attach 成功后,可以直接访问http//127.0.0.1:3658。用户其实也可以在Windows 下面通过端口号来访问程序。用户可以连接地址arthas-client connect 127.0.0.13658账号。首先,打开一个浏览器。然后,在浏览器上方搜索框输入127.0.0.1:3658,点击回车,即可看到浏览器里的界面。在此界面,可以敲击arthas 中的命令,例如help -回车,即可看到所有arthas 的命令。

image.png

三、课程小结

如若想要黏附一个进程,用户需要启动被诊断进程。

启动arthas-boot.jar,粘贴上面的进程。

不但可以通过命令行的方式来操作arthas,也可以通过浏览器来访问arthas。

相关文章
|
Kubernetes Ubuntu Cloud Native
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
271 0
|
消息中间件 Shell Linux
计算机操作系统学习笔记(7)——进程通信
计算机操作系统学习笔记(7)——进程通信
186 0
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理
118 0
|
监控 应用服务中间件 nginx
Supervisor快速入门 | 使用Supervisor守护Nginx进程
Supervisor快速入门 | 使用Supervisor守护Nginx进程
396 0
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
133 0
Go语言学习笔记-进程和线程
|
安全 算法 调度
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
299 1
411操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(四)
|
算法 调度 C++
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁
483 1
410操作系统学习笔记——进程与线程、处理机调度、同步与互斥(PV操作)、死锁(三)
|
Linux
计算机操作系统学习笔记(6)——进程和线程
计算机操作系统学习笔记(6)——进程和线程
224 0
|
存储 算法 程序员
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)
|
安全 Java
Java复习与学习笔记----进程和线程与同步(下)
Java复习与学习笔记----进程和线程与同步(下)

热门文章

最新文章