Java服务异常分析的几个思路

8 篇文章 0 订阅

Java服务异常分析的几个思路

  1. 首先使用top命令查看CPU使用情况。
jps // 拿到Java进程的$pid
top -Hp $pid // 对单独的进程,显示线程资源消耗情况。

top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ye4cpKjL-1598879455535)(https://raw.githubusercontent.com/dongzhonghua/dongzhonghua.github.io/master/img/blog/问题查看.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gDeYvQ3D-1598879455538)(https://raw.githubusercontent.com/dongzhonghua/dongzhonghua.github.io/master/img/blog/问题查看1.png)]

https://cloud.tencent.com/developer/article/1600345

top命令显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
  1. 找到具体的线程,分析这个线程在干嘛

https://www.xncoding.com/2018/06/25/java/jstack.html

jps(进程)、jmap(内存)、jstack(线程)、jinfo(参数)等。

  • jps:查询当前机器所有JAVA进程信息
  • jmap:输出某个 Java 进程内存情况(如产生那些对象及数量等)
  • jstack:打印某个 Java 线程的线程栈信息
  • jinfo:用于查看 jvm 的配置参数
jstack $pid // 获取线程堆栈信息
  1. cpu火焰图

火焰图

async-profiler简介

  1. 基于采样的轻量级诊断工具,支持cpu、lock、mem、thread、cachemiss等分析
  2. 可以分析jvm/native/kelnel调用栈
  3. 可以轻松生成火焰图

项目地址:https://github.com/jvm-profiling-tools/async-profiler

下载压缩包

wget https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.6/async-profiler-1.6-linux-x64.tar.gz

解压缩

tar -zxvf async-profiler-1.6-linux-x64.tar.gz

使用流程

解压后我们会得到一个profiler.sh脚本,主要功能皆通过该脚本完成

分析CPU

  1. 获取分析的进程号:jps -v
  2. 执行脚本 ./profiler.sh -e cpu -d 60 -f cpu.svg pid
  3. sz cpu.svg 到本地并用chrome打开火焰图即可

分析内存分配

  1. 获取分析的进程号:jps -v
  2. 执行脚本 ./profiler.sh -e alloc -d 60 -f mem_alloc.svg pid
  3. sz mem_alloc.svg 到本地并用chrome打开火焰图即可

分析锁

  1. 获取分析的进程号:jps -v
  2. 执行脚本 ./profiler.sh -e lock -d 60 -f lock.svg pid
  3. sz lock.svg 到本地并用chrome打开火焰图即可

分析线程状态

  1. 获取分析的进程号:jps -v
  2. 执行脚本 ./profiler.sh -e wall -t -i 5ms -f thread.svg pid
  3. sz thread.svg 到本地并用chrome打开火焰图即可

其他常用指令与功能

  1. ./profiler.sh list pid 查看支持的事件
  2. 分析cachemiss:./profiler.sh -d 30 -e cache-misses pid
  3. 相关脚本参数详情可参见github,有详细说明

火焰图分析指南

http://www.brendangregg.com/flamegraphs.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值