使用

这款工具可以监控线上、测试或者其他环境的java运行中程序的情况,用于定位线上、测试等环境的问题。

一、安装与启动

通过termius远程登录测试或者线上环境,cd到指定目录下,输入命令:

curl -O https://arthas.aliyun.com/arthas-boot.jar

我这里在spring的home目录下载的,即:/home/spring

即可下载,下载的位置是隐藏目录,在当前文件夹下ll -a 查看:

java 命令 阿尔沙斯 java 阿尔萨斯_jar

 

 

 具体的执行文件目录为:

/home/spring/.arthas/lib/3.6.0/arthas

目录文件如下:

java 命令 阿尔沙斯 java 阿尔萨斯_jar_02

 

 

 执行图中标记的jar即可启动,命令如下(需要在当前目录下执行):

java -jar arthas-boot.jar

java 命令 阿尔沙斯 java 阿尔萨斯_java_03

 

 

①通过命令启动arthas

②列出了所有正在运行的java程序

③输入需要,敲回车,监控指定的java程序

④监控该java程序的arthas 监听端口号,因为启动时没有指定端口号,所以默认是3658

⑤arthas版本号

⑥监控的java程序pid 

⑦进入arthas 命令行控制台

 

两种退出方式:

第一种

在命令行控制台中执行:exit或者quit,退出arthas,但是不会释放session,即对于当前程序的监听端口(这里默认是3658)不会释放,下次可以继续进入;下次进入方式如下:

java 命令 阿尔沙斯 java 阿尔萨斯_工具_04

 

 

①通过exit退出

②通过lsof -i:3658 命令查看3658端口是否被占用

从输出看出,被pid为25985进程占用了,也就是上一次监控的java进程

③通过java -jar arthas-boot.jar再次进入,因为没有指定监听的端口号,所以跟上一次共用的同一个session,也就是监听的25985的进程

④提示该监听端口已经监听了25985的进程,所以就只能进入25985的进程,对应的是序号1,如下图:

java 命令 阿尔沙斯 java 阿尔萨斯_java_05

 

 

 这也就是用的上一次通过exit退出的session;

如果我们这里进入其他程序会报错如下:

java 命令 阿尔沙斯 java 阿尔萨斯_java_06

 

 

 就提示我们3658以及监听了25985进程,有三种解决办法:

第一种:进入25985进程,stop进行退出(也就是下面要说的第二种退出方式),在重新进入其他进程;

第二种:尝试执行java -jar arthas-client.jar 127.0.0.1 3658 -c "stop" 停止已经存在的监听实例;

第三种:使用不同的监听端口启动arthas实例,执行:java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

这里是指定监听端口9998

arthas.telnet-port: -1:则不监听telnet端口。0:随机端口。

arthas.http-port: -1: 不监听http端口。0:随机端口。

第一种方式很简单,这里就不演示了;

第二种如下:

java 命令 阿尔沙斯 java 阿尔萨斯_java 命令 阿尔沙斯_07

 

 

①查看3658端口占用情况,显示被占用了;(注意千万不要杀掉占用的程序,因为这显示的占用程序pid是运行的java进程,并不是真正占用3658的监听端口程序)

②执行java -jar arthas-client.jar 127.0.0.1 3658 -c "stop"   杀掉占用3658的arthas实例

③再次查看3658端口占用情况,发现未被占用了;就可以采用默认端口重新进入监听别的程序了;

 

第三种方法:这种方法就是我杀掉其他的arthas实例,启动一个别的端口的arthas实例,用来监听另一个程序

java 命令 阿尔沙斯 java 阿尔萨斯_java_08

 

 

①指定端口9998启动arthas实例

②监听序号2的程序,监听端口是启动时指定的端口9998,不再是默认端口:3658了

结论:arthas 可以通过启动时指定不同的端口来监听不同的java程序,每次如果采用exit或者quit退出,都会保留实例,下次可以通过指定上次相同的端口,进入同一个实例,但是进入同一个实例,只能再次监听同一个java程序,不能使用同一个实例两次监听不同的程序,会报错端口冲突,告诉你三种解决办法;

 

第二种

在命令行控制台执行stop,会彻底退出arthas当前实例,即会释放当前arthas实例占用的端口,但是不影响其他的arthas实例;

 

命令行控制台使用


 

 

TRANSLATE with x

English

Arabic

Hebrew

Polish

Bulgarian

Hindi

Portuguese

Catalan

Hmong Daw

Romanian

Chinese Simplified

Hungarian

Russian

Chinese Traditional

Indonesian

Slovak

Czech

Italian

Slovenian

Danish

Japanese

Spanish

Dutch

Klingon

Swedish

English

Korean

Thai

Estonian

Latvian

Turkish

Finnish

Lithuanian

Ukrainian

French

Malay

Urdu

German

Maltese

Vietnamese

Greek

Norwegian

Welsh

Haitian Creole

Persian

 

 

TRANSLATE with

COPY THE URL BELOW

Back

EMBED THE SNIPPET BELOW IN YOUR SITE


Enable collaborative features and customize widget: Bing Webmaster Portal

Back

 

 

此页面的语言为中文(简体)

 

翻译为

 

 

 

 


  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语

 

随时将中文(简体)翻译为PRO
一律不翻译中文(简体)
一律不翻译i.cnblogs.com

带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯