萱草|又一款Java调试神器( 二 )


下载相关jar包
萱草|又一款Java调试神器启动:
java -jararthas-tunnel-server.jar默认情况下 , arthas tunnel server的web端口是8080 , arthas agent连接的端口是7777 。
启动arthas , 注册到tunnel server , 并指定一个agent-id:mytest123(默认是随机产生):
java -jar arthas-boot.jar --tunnel-server 'ws://192.168.1.28:7777/ws' --agent-id mytest123如下图所示 , 表面生成成功:
萱草|又一款Java调试神器这时 , 便可以访问 http://localhost:8080/, 再通过agentId连接到已注册的arthas agent上 。
萱草|又一款Java调试神器最后 , 放一张arthas tunnel server的架构示意图 , 有助于我们理解tunnel server和arthas agent的关系 , 见下图
萱草|又一款Java调试神器# 常用命令1、Dashboard 命令
查看当前系统的实时数据面板 , 例如:服务器thread信息、内存memory、GC回收等情况
萱草|又一款Java调试神器2、Thread(线程监控)
萱草|又一款Java调试神器$ thread -n 3"as-command-execute-daemon" Id=57 cpuUsage=72% RUNNABLEat sun.management.ThreadImpl.dumpThreads0(Native Method)at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:448)at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:133)at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:79)at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:370)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Number of locked synchronizers = 1 - java.util.concurrent.ThreadPoolExecutor$Worker@a2f70c7可以看到这个线程是被synchroned关键字锁导致的阻塞, 目前只支持找出synchronized关键字阻塞住的线程 ,如果是java.util.concurrent.Lock ,目前还不支持 。
3、trace (当前方法内部调用路径 , 路径上每个节点的耗时)


推荐阅读