桃之夭夭,灼灼其华

服务器项目问题定位—CPU

Word count: 234Reading time: 1 min
2020/07/01 Share

如何排查服务器上Java项目CPU使用过高呢?

分析

造成cpu过高的都是频繁的计算、线程的创建、销毁、切换。

处理思路

  • 首先要定位进程(进程是操作系统的基本单元)
  • 从进程中定位到线程(线程是进程资源分配的最小单元)
  • 使用Javacore定位线程正在干什么

执行步骤

1.通过linux系统命名 top -c,查找到线程中cpu消耗最高的进程(pid)。

1526480843
2.使用top -Hp pid,获取进程中消耗最高的线程。

1526480895
因为查出来的线程id(tid)是10进制的,而在java的线程dump中线程是16进制的,所以我们转换一下printf “%x” tid

1526480962
3.使用Javacore命令,jstack pid | grep ‘tid’ -C10 –color(-C10 前后10行, –color高亮)
这样我们就和可以获取到线程究竟在干什么了,是哪行代码导致的问题。

1526481026

CATALOG
  1. 1. 如何排查服务器上Java项目CPU使用过高呢?
    1. 1.1. 分析
    2. 1.2. 处理思路
    3. 1.3. 执行步骤