1.相关命令
top : lunix自带命令 查看硬件使用情况
jps:查看启动的java程序
jinfo pid: 查看对应pid的进程
jstack :查看线程数和线程详情
jmap:
jmap -dump:format=b,file=filename.prof pid 导出pid堆内容到filename.prof
jmap -histo pid | head -20
线上最好不要用导出和图形化界面远程连接分析
1.可以在压测下
2.线上使用负载均衡隔离一台机器进行测试
3.如果线上压力大没办法隔离 使用tcpCopy将流量复制到另一个机器
arthas 线上定位(阿里)
使用arthas会自动找到正在运行的java,进入bin使用java -jar 启动
启动后会把自己挂在当前java进程下进行分析
(1)如查找死锁:thread -b
(2)使用jad T命令反编译可以防止:
1.集成代码版本错误 查看源码
2.动态代理是否导致错误
(3)热更新 redefine(通过jad反编译修改之后重新编译 使用热更新更新)
二:
怎么检测多服务调用哪个环节出了问题?
单机版:做压测
分布式:链路追踪
可以使用arthas的 trace ABC b (ABC为类名 b为方法名)