• Java线上应用故障排查


    线上故障主要2种: CPU利用率很高, 内存占用率很大

    一、CPU利用率很高

    1. top查询那个进程CPU使用率高

    2. 显示进程列表

    ps -mp pid -o THREAD,tid,time

    找到了耗时最高的线程28802,占用CPU时间快两个小时了!

    其次将需要的线程ID转换为16进制格式:

    printf "%x " tid

    2

    最后打印线程的堆栈信息:

    jstack pid |grep tid -A 30

    3

    从Thread dump日志中可以找到哪行代码造成CPU使用率高 

    二、内存占用率很大

    1. top命令查找那个进程内存占用率大

    2. 使用jmap命令获取内存dump文件

    jmap命令有下面几种常用的用法:

    •jmap [pid]

    •jmap -histo:live [pid] >a.log

    •jmap -dump:live,format=b,file=xxx.xxx [pid]

    用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

    jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。

    MAT分析内存参考:

    http://blog.csdn.net/rachel_luo/article/details/8992461

    http://www.blogjava.net/hankchen/archive/2012/03/21/372389.html

  • 相关阅读:
    寒假补习记录_4
    寒假补习记录_3
    寒假补习记录_2
    寒假补习记录_1
    公文流转系统编程
    Javaweb编程
    转:在静态方法中访问类的实例成员
    Java字段初始化规律
    原码,反码,补码浅谈
    java第二节课课后
  • 原文地址:https://www.cnblogs.com/jsnr-tdyd/p/7801171.html
Copyright © 2020-2023  润新知