熟悉这些Java排查工具就够了

掘金账号:橘松Java
微信公众号:橘松Java技术窝
文章首发掘金平台,后续同步更新公众号,关注后回复 "加群" 可加入互联网技术交流&内推群,和一群大厂大佬讨论面试问题。回复 "666" 可获取一线互联网具备所有资料包(包括开发软件、开发规范、经典电子pdf、以及一些精品学习课程)。

前言

平时的工作中当我们碰到疑难问题的处理时候,在解决问题的同时,有一些很好的工具起到了相当大的作用,在此将会记录下来几乎是最全Java服务端开发用到的工具分享给大家,希望看到此文的同学们今后可以用到日常工作中解决问题。

Linux命令类

tail

相信这是最常用的一个命令,方便查看服务端机器的日志 最常用的就是tail -f

tail -100f  xxx.log # 倒数100行并写入实时监听文件写入模式

grep

grep forest xxx.log #日志查找<br>
grep forest xxx.log yyy.log ##多日志查找<br>
cat xxx.log | grep -i 'keyword' #管道过滤关键字

pgm

 pgm -A -f xxx.log 'filePath/xxx.log | grep 'keyword'' #批量查询xxx.log 满足条件的日志'

top

top -H -p pid #top一般看一些基本信息,其他的配合来拆线呢jvm的一些问题了

排查利器

Arthas

说到排查利器,第一个立马想到Arthas,他可以帮助我们拿到很多信息,是一个可以在线诊断的工具,可以这样说几乎很多原生的jvm命令 都可以在它身上找到本身,还不了解的同学可以先去官网学习下arthas官网 ,有很多其他的命令,不过我一般用上面这些命令用的多。

 ------类、方法冲突、class文件、classloader继承等 ------

`thread`-----查看当前jvm线程堆栈信息
`sc`---------查看jvm已加载的类信息
`dump`-------dump已加载类的字节码到特定目录
`jad`--------反编译已加载类的源码
`classloader`---查看继承树,类加载信息

 ------查看方法执行参数、异常、返回值、耗时、调用路径等 ------
 `monitor`-----方法执行监控
 `watch`-------方法执行数据监控 参数 返回值等
 `trace`-------方法内部调用路径,并输出方法路径上每个节点上耗时
 `stack`-------输出当前方法被调用的调用路径
 `tt`----------方法执行数据的时空隧道,就是可以回溯指定方法每次调用不同时间下的入参返回值

Jprofiler

在之前判断许多问题要通过Jprofiler,但是现在Arthas基本就能搞定了,关键的问题是现在生产观景基本都是网络隔离的,所以基本不怎么使用了。

Java五把斧

jps

主要用途一般用来查看jvm参数以及进程号 jps-l jps-v jps-q

jstack

java虚拟机自带的一种堆栈跟踪工具,主要用来生成jvm线程快照定位出现卡顿原因,死锁、死循环、请求长时间wait等 这个也可以用arthas -b查看

 sudo -u admin /xxx/yyy/bin/jstack 1234
 sudo -u admin /xxx/yyy/bin/jstack -m 1234 #native+java栈

jinfo

主要用查看系统启动参数,比如你远程debug端口忘了,启动端口,jvm分配内存大小等

  sudo -u admin /xxx/yyy/bin/jinfo -flags 2815

jmap

主要两个用途,查看堆的情况 以及dump文件 查看堆内存都被谁占了大头

  sudo -u admin /xxx/yyy/bin/jmap -heap 1234 #查看堆的情况
  sudo -u admin /xxx/yyy/bin/jmap -demp:format=b,file='filePath' #dump
  sudo -u admin /xxx/yyy/bin/jsmp -histo 1234 | haad 20 | top20 

jstat

主要用来查看垃圾回收内存分配 每个区域变化大小 包括S0 S1 CCS YGC FGU GCT 这些

sudo -u admin /xxx/yyy/bin/jstat -gcutil 1234 1000 

最后

  • 文章均原创,原创不易,感谢掘金平台,觉得有收获,帮忙三连哈,感谢
  • 微信搜索公众号:橘松Java技术窝,交个朋友,进互联网技术交流群
  • 文章涉及的所有代码、时序图、架构图均共享,可通过公众号加群免费索要
  • 文章若有错误,欢迎评论留言指出,也欢迎转载,麻烦标注下出处就好
全部评论

相关推荐

秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++&nbsp;&amp;&nbsp;Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务