性能文章>使用Top_X插件排查内存过载问题>

使用Top_X插件排查内存过载问题原创

11月前
1458504

Top命令是Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 或内存使用情况。

XPocket中的Top_X为Linux Top的增强版,可以显示CPU占用率/负载,CPU及内存进程使用的list。它对于繁杂的top命令输出进行了功能的拆分和整理,更加清晰易用,支持管道化,尤其可以直接拿到top进程或线程tid,pid; mem_s命令增加了按照进程swap大小占用排序增强了原有top功能。

下面我们模拟一机器内存泄漏使用了大量物理内存导致物理内存飙升的情况:

#include <stdio.h>


int fff()
{
    int i = 0;
    while(1)
    {
	sleep(1);
        void *m = malloc(1024*1024);
        memset(m,0,1024*1024);   // 不用memset这么多,只需要memset每个page的第一个字节偷懒了
        i++;
        printf("size = %d M\n", i);
        if( (i%1000 == 0) && (i/1000 != 0))
        {
            printf("size = %d M, sleep 30\n", i );
            sleep(30);     //多等待下 防止虚拟机swap占
 
        }

    }
    return 0;

}

int ddd()
{
    fff();
    return 0;
}

int main()
{
    ddd();
    return 0;
}

初始状态下内存空闲:
图片4.png

运行上述程序大量使用物理内存,Linux内存紧张, 模拟内存泄漏,触发系统swapper进程,测试可以观察到swap 空间被占用:
图片5.png

使用top_x插件看一下具体信息发现很多进程的内存被swap出去:
图片6.png

说明内存已经比较紧张了,通过top_x mem_r 命令查看下哪个进程占用的物理内存最多:
图片7.png

可以看到我们的useallmem+ 占用的物理内存高达 5.7g , 超过了内存总量的 74.9%之多。

Top_X插件下载地址:https://plugin.xpocket.perfma.com/plugin/65
XPocket下载地址:
https://xpocket.perfma.com/docs/download/

请先登录,感受更多精彩内容
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

关于内存溢出,咱再聊点有意思的?
概述 上篇文章讲了JVM在GC上的一个设计缺陷,揪出一个导致GC慢慢变长的JVM设计缺陷,可能有不少人还是没怎么看明白的,今天准备讲的大家应该都很容易看明白 本文其实很犹豫写不写,因为感觉没有
在调试器里看LINUX内核态栈溢出
图灵最先发明了栈,但没有给它取名字。德国人鲍尔也“发明”了栈,取名叫酒窖。澳大利亚人汉布林也“发明”了栈,取名叫弹夹。1959年,戴克斯特拉在度假时想到了Stack这个名字,后来被广泛使用。
LONG究竟有多长,从皇帝的新衣到海康SDK
转眼之间初中毕业30年了,但我仍清楚的记得初中英语的一篇课文,题目叫《皇帝的新装》(“The king’s new clothes”)。这篇课文的前两句话是:”Long long ago, there
谨防JDK8重复类定义造成的内存泄漏
概述 如今JDK8成了主流,大家都紧锣密鼓地进行着升级,享受着JDK8带来的各种便利,然而有时候升级并没有那么顺利?比如说今天要说的这个问题。我们都知道JDK8在内存模型上最大的改变是,放弃了Perm
JVM菜鸟进阶高手之路二MAT工具相关知识解惑
关于MAT工具相关知识解惑MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的
JVM垃圾回收与一次线上内存泄露问题分析和解决过程
本文转载自:花椒技术微信公众号 前言内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。Ja
雕刻在LINUX内核中的LINUS故事
因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人。虽然大家可能都听过钱钟书先生的名言:“假如你吃个鸡蛋觉得味道不错,又何必认识那个下蛋的母鸡呢?” 但是如果真是遇到一个“特别显赫”
强如 Disruptor 也发生内存溢出?
前言```OutOfMemoryError ```问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界、空指针等)来说这类问题是很难定位和解决的。本文以最近碰到的一次线上内存溢出的定位、解决问题的
4
0