docker程序线上排查

2022-05-13  本文已影响0人  红玫瑰一双眼

安装并启动Arthas

容器中不存在jar包的情况

docker exec -it  ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar"

容器中已存在jar包的情况

docker exec -it  ${containerId} /bin/bash -c "java -jar arthas-boot.jar"

常用命令

-n 很多命令都可以加,都是次数限制

watch

下面案列表示查看该方法的参数和返回值或者异常,统计5次,各层参数遍历3层
'{params,returnObj,throwExp}' 查看参数、返回值、异常
-x参数或者返回值的显示层数

watch com.free.as.bus.controller.TestController test1 '{params,returnObj,throwExp}'  -n 5  -x 3 

monitor

下面案例表示每5s统计一次共统计三次
-c 统计周期,单位:秒

monitor -c 5 com.free.as.bus.controller.TestController test1  -n 3

trace

案例:统计方法耗时大于100毫秒并且不跳过JDK的方法
'#cost > 100' 耗时大于100毫秒

trace com.free.as.bus.controller.TestController test1 '#cost > 100' -n 5 --skipJDKMethod false 

tt

watch指令的托管版,方法调用情况无需实时查看,-n 参数是为了防止方法调用太猛导致jvm撑爆

tt -t com.free.as.bus.controller.TestController test1 -n 3

thread

线程问题排查

thread -b    找出当前阻塞其他线程的线程

thread -n 3  展示当前最忙的前3个线程并打印堆栈
上一篇下一篇

猜你喜欢

热点阅读