• 性能测试 | 线上环境,内存溢出了怎么办呀


    工具: 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

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

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

  • 相关阅读:
    工作中用到知识点
    工作中遇到问题的解决办法
    透明度兼容性(ie8以上)
    js阻止浏览器默认行为
    js停止冒泡和阻止浏览器默认行为
    js添加事件通用方法
    jquery常用插件
    延迟加载、异步加载js
    JavaScript兼容性问题
    创建对象的一种方式&一种继承机制(代码实例)
  • 原文地址:https://www.cnblogs.com/wyf0518/p/11451606.html
Copyright © 2020-2023  润新知