推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

Java应用线上问题排查的常用工具和方法

   2023-07-21 网络整理佚名1760
核心提示:在长期排查线上问题的过程中,总结了一些工具的用法和排查问题的思路,这里跟大家分享一下,在遇到类似的问题时,希望能给予一些帮助。排查GC问题必然会用到的工具,jmap可以告诉你当前JVM内存堆中的对象分布及其关系,当你dump堆之后可以用MAT分析,看看有哪些大对象,或者哪些类的实例特别多。然后我们来介绍一些开源的工具,来增强JVM工具本身的作用。

在长期排查线上问题的过程中,总结了一些工具的使用方法以及排查思路。 在这里我想和大家分享一下。 当遇到类似问题的时候,希望能够给予一些帮助。

我们先谈谈工具。 jvm自带的一些工具是必须掌握的,比如jmap、jstat等,它们可以帮助我们了解JVM在做什么。 主要应用领域如下:

1、

它可以告诉你所有JVM线程当前正在做什么,包括用户线程和虚拟机线程。 可以用它查看线程堆栈,结合Lock信息来检测是否发生了死锁和死锁线程。

知道你的小朋友在做什么是可以的。

另外,当你使用top -H查看占用CPU很高的pid时,可以将其转换为十六进制,然后在转储的文件中搜索,看看是什么线程占用了CPU。

2. jstat

stat,顾名思义,提供一些统计信息。 它可以告诉你当前GC的情况,包括GC次数和时间。 具体GC还可以结合gc.log文件进行分析。

一般来说,我们通过jstat查看GC情况来判断是否有频繁的YGC或者FGC,然后查看gc.log和jam dump内存,以及MAT分析来定位问题(后面会有这种场景的案例)。

常见用法是jstat - pid

3.jmap

不可避免地会被用来解决GC问题的工具。 jmap可以告诉你当前JVM内存堆中对象的分布和关系。 转储堆后,可以使用 MAT 对其进行分析,看看其中有哪些大对象,或者哪些类的实例特别多。

常见用法:

强制 FGC:-histo:live

转储堆:-dump:[live],=b,file=dump.bin

查看每一代的内存使用情况:-heap

然后我们介绍一些开源工具来增强JVM工具本身的作用。

4. 顶部

这是linux的内置命令。 要查看系统资源的消耗情况,可以查看CPU、内存、SWAP、I/O的消耗情况。 有几个值需要特别注意:

ni,如果这个值特别高,说明线程上下文切换的开销很大,看看是不是线程太多导致的

res,这个代表进程实际占用的内存

swap,内存不足会占用swap空间。 这时一般应用的性能会急剧下降,所以要特别注意

 
标签: 线程 jstat
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON