目 录CONTENT

文章目录

第九章 并发实践

FatFish1
2024-10-31 / 0 评论 / 0 点赞 / 66 阅读 / 0 字 / 正在检测是否收录...

线上问题定位方法总结

TOP命令

  • 可以通过top命令guan'ca管擦和到COMMAND是java的性能数据

  • 使用top交互命令1查看每个cpu的性能,可以看到每个cpu的平均利用率,其中的参数包括:

参数

描述

us

用户空间占用CPU的百分比

1.0% sy

内核空间占用CPU的百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.6% id

空闲CPU百分比

9.9% wa

等待输入/输出的CPU时间百分比

  • 使用top交互命令H可以查看每个线程的性能信息,可以基于以下情况分析:

    • 第一种情况,某个线程CPU利用率一直100%,则说明是这个线程有可能有死循环,那么 请记住这个PID。

    • 第二种情况,某个线程一直在TOP 10的位置,这说明这个线程可能有性能问题。

    • 第三种情况,CPU利用率高的几个线程在不停变化,说明并不是由某一个线程导致CPU 偏高

  • GC也可有可能导致单个线程CPU利用率100%,因为GC会Stop The World,这时可以配合jstat命令查看下GC情况

./jstat -gcutil <PID> 1000 5
  • 也可以配合jstack命令dum内存情况

./jstack <PID> > /home/log/dum17
  • 因为top看到线程ID是十进制,而jstack结果是十六进制,因此需要转换下线程编号,再去dump结果里面找

printf "%x\n" <PID>

0

评论区