开发者社区 问答 正文

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

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

展开
收起
追风少年刘全有 2021-10-12 16:58:59 631 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论