Java项目线上问题排查

  1. 找到对应的程序使用

jps //window配置了环境变量时可直接使用, 输出pid:5108 名称:myApp
ps -ef |grep java 查看含有"Java"的活动进程

//linux下可能用到的命令10进制转16进制  printf '%x\n' 13033
  1. 情况允许的情况下可以用Java VisualVM工具打开

  1. 查看系统配置包括很多东西的路径

jinfo 5108

  1. 查看线程状态

jstack 5108 //用于输出当前时刻用户线程的快照,称为threaddump,通常用于监测死锁

死锁这里线程会显示wait to lock <0xaavaads>对象,我们可以看这个对象是什么

  1. 查看堆占比命令,gc原因命令,可以使用jhat命令

jhat -class/-gc/-gccause/-gcnew //等命令可以看堆大小,空间占比,上次gc原因
  1. 导出内存映像

jmap -dump:format=b,file=myDump.bin 5108 //foramt=b指定文件二进制,file=自定义名称
这里生成的二进制文件不能直接使用,使用jhat打开
jhat myDump.bin    //执行完成后会打开一个localhost:7000的端口供你筛选使用

这样我们就能根据地址定位到具体的对象了

  1. 线上问题,比如方法耗时可以利用Java VisualVM profile工具

  1. 线上问题,给服务器临时加日志排查问题

  • 可以在VisualVM中集成Btrace插件,临时编写线上代码 (具体集成详见网上教程)

  • 也可以集成阿里开源的arthas实现 (具体集成详见网上教程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值