排查机器load高原因

有1个机器上load比较高,需要排查下是什么原因造成的,这边记录下排查过程。

1. top 先看下机器总体状况,其中cpu sy 占用大概到90%,us,wa等指标都很低,说明系统中存在大量的线程切换。

2. 然后top中看到一个java进程占用cpu 100%以上,基本上定位到该进程可能存在问题。

3. ps -Lf pid  查看该java进程的各线程资源占用比,发现有两个线程占用cpu比较明显,将这两个线程线程号转成16进制备用

4. jstack pid > stack 将该java进程的线程栈dump出来,grep 上一个步骤准备好的线程号,找到对应代码

5. 最后发现是java进程使用的disruptor的WaitStrategy选择不是很合理,修改后发布,一些归于平静

你可能感兴趣的:(排查机器load高原因)