故障排除

本文介绍了如何排查Java应用中的CPU和内存问题。对于CPU问题,通过jstack分析高CPU使用率线程,关注WAITING和TIMED_WAITING状态。针对频繁GC,使用jstat观察分代变化,并根据情况调整GC参数。内存问题中,针对OOM和Stack Overflow,分析代码和使用jstack、jmap定位问题,并调整JVM参数如Xss。同时,介绍了如何保存和分析内存dump文件以查找内存泄漏。
摘要由CSDN通过智能技术生成

CPU

通过jstack分析

  • 我们先用ps命令找到对应进程的pid(如果你有好几个目标进程,可以先用top看一下哪个占用比较高)
  • 接着用top -H -p pid来找到cpu使用率比较高的一些线程
  • 然后将占用最高的pid转换为16进制printf '%x\n' pid得到nid
  • 接着直接在jstack中找到相应的堆栈信息jstack pid |grep '0xnid' -C5 –color
  • 可以看到我们已经找到了0xnid的堆栈信息,接着只要仔细分析一番即可
  • 当然更常见的是我们对整个jstack文件进行分析,通常我们会比较关注WAITING和TIMED_WAITING的部分,BLOCKED就不用说了,我们可以使用命令cat jstack.log | grep "java.lang.Thread.State" | sort -nr | uniq -c来对jstack的状态有一个整体的把握,如果WAITING之类的特别多,那么多半是有问题啦

频繁gc

  • 使用jstat -gc pid 1000命令来对gc分代变化情况进行观察,1000表示采样间隔(ms),S0C/S1C、S0U/S1U、EC/EU、OC/OU、MC/MU分别代表两个Survivor区、Eden区、老年代、元数据区的容量使用量
  • YGC/YGCT、FGC/FGCT代表YoungGC、FullGC的耗时次数
  • GCT代表总耗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发财猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值