当前位置:   article > 正文

Java线上问题排查

java线上问题排查

目录

一、CPU使用率高

1)找到进程ID

2)找到CPU占用率最高的线程(轻量级进程)ID

3)查看线程的堆栈信息

二、内存占用高

1)将堆内存信息dump下来(生产环境需要谨慎)

2)分析堆快照信息

三、内存溢出

一、CPU使用率高

模拟代码

  1. public class OnLine {
  2. public static void main(String[] args) {
  3. while (true) {
  4. // run
  5. }
  6. }
  7. }

1)找到进程ID

方法一:top命令列出进程信息,按P(shift+p)让CPU占用率由高到低排序(按M是内存),由此看到最高的是java进程,PID为31416。

方法二:jps命令,看到启动类OnLine对应的PID为31416。

方法三:ps -ef | grep java,自己玩哈。

2)找到CPU占用率最高的线程(轻量级进程)ID

top -Hp PID命令列出指定进程里线程信息,同样按P排序,看到最高的线程ID为31420。

3)查看线程的堆栈信息

首先将十进制31420转为十六进制,使用命令printf '%x\n' xxx。然后用jstack命令配合grep命令输出线程的堆栈信息。

jstack 进程ID | grep '0x线程ID' -A 10

由此可以看到线程的状态和执行代码位置。

二、内存占用高

模拟代码

  1. public class OnLine {
  2. private static final List<Byte[]> bytesList = new ArrayList<>();
  3. public static void main(String[] args) {
  4. for (int i = 0; i <= 10; i++) {
  5. Byte[] bytes = new Byte[1024 * 1024];
  6. bytesList.add(bytes);
  7. }
  8. LockSupport.parkNanos(TimeUnit.HOURS.toNanos(1));
  9. }
  10. }

top命令列出进程信息,按M(shift+m)让内存占用率由高到低排序(按P是CPU),由此看到最高的是java进程,PID为13915。

1)将堆内存信息dump下来(生产环境需要谨慎)

jmap -dump:live,format=b,file=heap.bin 13915

jmap [optionspid

-dump:dump_options pid

Connects to a running process and dumps the Java heap. The dump_options include:

  • live --- When specified, dumps only the live objects; if not specified, then dumps all objects in the heap.

  • format=b --- Dumps the Java heap in hprof binary format

  • file=filename --- Dumps the heap to filename

Example: jmap -dump:live,format=b,file=heap.bin pid

2)分析堆快照信息

打开可视化工具jvisualvm(目录:JAVA_HOME/bin/),文件->装入,选择刚才dump的文件

打开之后,选择“类”,按“大小”降序,就可以看到各类的实例数量和内存占用大小的信息了

双击类所在行(比如上面的java.lang.Byte[]),选择实例,可以看到详细引用信息了

三、内存溢出

让JVM在发生内存溢出时自动dump堆快照文件

参数设置:

  • -XX:+HeapDumpOnOutOfMemoryError:内存溢出时,保存堆快照文件
  • -XX:HeapDumpPath=/home/zhh/:堆快照文件保存路径

还是采用上面的代码,启动参数设置如下

-Xms10M
-Xmx10M
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/zhh/

发生OOM时,在指定位置dump了堆快照文件,这时就可以拿去分析了(参考2)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/266805
推荐阅读
相关标签
  

闽ICP备14008679号