运行时系统分析

YuJia大约 2 分钟

1. CPU异常分析

一般来讲我们应该会排查CPU方面的问题。

  • 1. 业务逻辑问题(死循环) ⬅️ 这是最常见的问题
    1. 频繁GC
    1. 上下文切换过多

等等

分析步骤

ps -ef | grep 关键字

如果找到好多个pid无法确定是哪一个时,可以通过top命令看一下时哪个进程占用比较高
主要目的是找出 pid 用于调用其它命令

jstack 分析不正常线程

通常我们会比较关注 BLOCKEDWAITINGTIMED_WAITING 三种状态的线程,如果这三种比较多,多半是有问题的。

线程的状态

初始(NEW)
运行(RUNNABLE)
阻塞(BLOCKED):表示线程阻塞于锁。
等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回。
终止(TERMINATED)

jstack <pid> > jstack.log

参考