Java项目线上问题排查

  1. 找到对应的程序使用

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

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

Java项目线上问题排查_第1张图片

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

jinfo 5108
Java项目线上问题排查_第2张图片

  1. 查看线程状态

jstack 5108 //用于输出当前时刻用户线程的快照,称为threaddump,通常用于监测死锁
Java项目线上问题排查_第3张图片

死锁这里线程会显示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的端口供你筛选使用
Java项目线上问题排查_第4张图片

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

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

Java项目线上问题排查_第5张图片

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

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

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

你可能感兴趣的:(Java,java,linux)