zoukankan      html  css  js  c++  java
  • 性能测试 | 线上环境,内存溢出了怎么办呀

    工具: jstack + top 命令

    排查思路:1)找出占用高的进程 2)找出占用高的线程 3)找出具体的代码

    步骤:

    1)使用top命令找出进程

    --执行“top -c”命令,显示进程运行信息列表,键入大写P,按CPU使用率降序排列

    如下图所示:找出了进程编号:11098 的进程,占用cpu较高

    线上环境,内存溢出了怎么办呀

    2) 找出线程

    --执行命令: top -Hp 进程编号 ,显示出该进程下的线程列表,然后键入大写P后,按CPU使用率降序排列

    -- top –Hp 11098 , 找出了线程编号为:11569


    线上环境,内存溢出了怎么办呀

    3) 找出线程对应的代码

    --执行:printf “%x ” 11569 ,得出16进制:2d31(转为16进制,是因为jstack打印出的线程栈信息中,线程id是通过16进制展示的 )

    --执行: jstack 11098 | grep “2d31” -C5 –color,这样就找到具体的代码

    --关于线程名的问题,如果在程序里面自己开了线程or线程池,最好取个识别度高的名字

    线上环境,内存溢出了怎么办呀

    工具: jmap + jstat + mat

    排查思路:1) 检查jvm内存的分配情况 2) 检查jvm的gc情况 3)找出占用量比较大的对象

    步骤:

    1) 查看jvm内存分配及使用情况

    ---通过命令 jmap –heap 进程id (目的是确定内存分配是否正确,以及jvm中内存的实时状态)

    --- jmap -heap 23740

    线上环境,内存溢出了怎么办呀

    2) Jstat命令检查jvm的gc情况

    ---执行: jstat -gcutil 23740 1000

    线上环境,内存溢出了怎么办呀

    3) Jmap命令找出占用量比较大的对象

    ---执行: jmap -histo:live 23740 |more

    线上环境,内存溢出了怎么办呀

    更多内容请关注微信公众号:起点测试

  • 相关阅读:
    H5调用相机和相册更换头像
    二分查找的递归解法以及希尔排序
    递归----经典问题:汉诺塔游戏
    递归----基础训练
    位运算-实现加减乘除
    位运算-出现k次与出现一次
    位运算-将整数的二进制进行奇偶位互换
    位运算-二进制中1的个数(三种解法)
    位运算-查找数组中唯一成对的数
    小小的总结一下2018年
  • 原文地址:https://www.cnblogs.com/wyf0518/p/11451606.html
Copyright © 2011-2022 走看看