开发者社区> 问答> 正文

收到报警,系统的内存使用率触发阈值时该怎么办?

收到报警,系统的内存使用率触发阈值时该怎么办?

展开
收起
追风少年刘全有 2021-10-12 16:58:59 608 0
1 条回答
写回答
取消 提交回答
  • 1.登陆系统,使用命令查看内存分配。

    image.png

    image.png

    看下内存分配(cat /proc/meminfo 也可以看到一些细化的内存使用信息)。

    image.png

    2.发现 cache 才 1.7G,slab 非常高,4.4G,slab 内存简单理解为是系统占用的。使用 slabtop 继续分析。

    image.png

    3.看到 proc_inode_cache 使用的最多,这个代表是 proc 文件系统的 inode 的占用的。

    4.查进程,如果进程不多,再查线程,可以通过如下命令进行检查。

    image.png

    计算 socket。

    image.png

    计算一下有多少 fd。

    image.png

    1. 每个 socket 的 inode 也不一样。

    image.png

    当时看到的现场有几万个fd,基本全是socket,每个inode都是占用空间的, 且 proc 文件系统是全内存的。所以我们才会看到 slab 中 proc_inode_cache 内存占用高。

    建议用户需要从程序上优化相关的 server 端~

    资料来源:电子书《ECS运维指南之Linux系统诊断》,下载链接:https://developer.aliyun.com/topic/download?id=143

    2021-10-12 17:12:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
网络流量异常行为分析系统 立即下载