首页 > 系统相关 >Linux 内存问题

Linux 内存问题

时间:2023-01-04 17:55:16浏览次数:63  
标签:free 使用率 min kbytes 问题 内存 Linux Total

Linux 内存问题

1 内存使用率过高

现象描述

Linux 云服务器实例出现由内存问题引发的故障。例如,系统内部服务响应速度变慢、服务器登录不上、系统触发 OOM(Out Of Memory)等。

可能原因

可能是实例内存使用率过高等问题引起。通常情况下当实例内存使用率持续高于90%时,可判断为实例内存使用率过高。

处理步骤

  1. 参考 相关操作,查看内存使用率是否过高。
  2. 在系统内部执行 top 命令后按 M,查看 “RES” 及 “SHR” 列是否有进程占用内存过高。
    • 否,则执行下一步。
    • 是,则对应进程类型进行操作,详情请参见 分析进程
  3. 执行以下命令,查看共享内存占用是否过高。
     
    cat /proc/meminfo | grep -i shmem
    1. 返回结果如下图所示:
    2. 执行如下命令,查看不可回收的 slab 内存占用是否过高。
       
      cat /proc/meminfo | grep -i SUnreclaim
      返回结果如下图所示:
    3. 执行以下命令,查看是否存在内存大页。
       
      cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"
      返回结果如下图所示:
      • HugePages_Total 输出为0,则请参考 其他内存问题典型案例分析,进一步定位问题原因。
      • HugePages_Total 输出非0,则表示配置了内存大页。内存大页的大小为 HugePages_Total*Hugepagesize, 您需确认 hugepage 是否为其他恶意程序配置。若确认已不需要内存大页,可通过注释 /etc/sysctl.conf 文件中的 vm.nr_hugepage 配置项,再执行 sysctl -p 命令取消内存大页。

计算内存使用率

内存监控中内存使用率计算方法为:用户使用的内存量与总内存量之比,不包括缓冲区与系统缓存占用的内容。计算过程如下:
(Total - available)100% / Total
(Total - (Free + Buffers + Cached + SReclaimable - Shmem))100% /Total
(Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total

计算过程中使用的 TotalFreeBufferCachedSReclaimableShmem 参数可从 /proc/meminfo 中获取。

参数说明如下:

 

参数说明
MemTotal 系统总内存。
MemFree 系统剩余内存。
Buffers 表示块设备(block device)所占用的缓存页,包括直接读写块设备,以及文件系统元数据(metadata),例如 SuperBlock 所使用的缓存页。
Cached page cache,包含 tmpfs 中的文件 POSIX/SysV shared memory 及 shared anonymous mmap
Shmem 包括共享内存,tmpfs 等。
Slab 内核 slab 分配器分配的内存,可以用 slabtop 查看。
SReclaimable 可回收的 slab。
SUnreclaim 不可回收的 slab。
HugePages_Total 内存大页总共的页数。
Hugepagesize 内存大页一页的大小

 

2 内存未耗尽时触发 Out Of Memory

现象描述

Linux 云服务器在内存使用率未占满的情况下触发了 OOM(Out Of Memory)。如下图所示:

可能原因

可能是由系统可用内存低于 min_free_kbytes 值导致。min_free_kbytes 值表示强制 Linux 系统最低保留的空闲内存(Kbytes),如果系统可用内存低于设定的 min_free_kbytes 值,则默认系统启动 oom-killer 或强制重启。具体行为由内核参数 vm.panic_on_oom 值决定:

  • 若 vm.panic_on_oom=0,则系统会提示 OOM,并启动 oom-killer 杀掉占用最高内存的进程。
  • 若 vm.panic_on_oom =1,则系统会自动重启。

解决思路

    1. 参考 处理步骤 进行排查,查看实例内存使用率是否过高及总进程数是否受限。
    2. 核实 min_free_kbytes 值设置,并修改为正确配置。
  1. 登录云服务器,执行以下命令查看 min_free_kbytes 值。
     
    sysctl -a | grep min_free
    min_free_kbytes 值单位为 kbytes,下图所示 min_free_kbytes = 1024000 即为1GB。
  2. 执行以下命令,使用 VIM 编辑器打开 /etc/sysctl.conf 配置文件。
     
    vim /etc/sysctl.conf
  3. 按 i 进入编辑模式,修改 vm.min_free_kbytes 配置项。若该配置项不存在,则直接在配置文件中增加即可。
    说明

    建议修改 vm.min_free_kbytes 值为不超过总内存的1%即可。

  4. 按 Esc 并输入 :wq 后,按 Enter 保存并退出 VIM 编辑器。
  5. 执行以下命令,使配置生效即可。
     
    sysctl -p

     

 

标签:free,使用率,min,kbytes,问题,内存,Linux,Total
From: https://www.cnblogs.com/weiweirui/p/17025615.html

相关文章

  • 1_Linux文件管理方式及常用命令
    一:文件管理方式:Windows:分磁盘C: D: E: →目录/文件Linux:没有【磁盘】的概念,是以树状形式管理,根目录(顶层目录):"/",根下的目录:bin,etc,root,home,xxx.txt等等目录结......
  • 在linux上安装node
    1、去https://nodejs.org/en/download/下载node-v13.14.0-linux-x64.tar.xz,放到/root/tools/node/目录下;2、解压:tar-xvfnode-v13.14.0-linux-x64.tar.xz3、cd到/......
  • 基于不同操作系统升级知行之桥的常见问题
    此前的文章知行之桥2022版本升级之页面变化以及监控邮件答疑给大家分享了一些升级到知行之桥最新版本关于Web页面显示和监控邮件的一些问题,本篇将分享一些windows和Linux不......
  • Alpine Linux All In One
    AlpineLinuxAllInOnealpineAlpineLinuxisanindependent,non-commercial,generalpurposeLinuxdistributiondesignedforpoweruserswhoappreciatesec......
  • 诊断网络问题的7个简单步骤
    在您的计算机可能存在的所有类型的问题中,网络问题可能是最糟糕的问题之一。更糟糕的是,当您无法上网时,您无法轻松研究修复问题。让我们逐步完成您应该执行的过程来诊断网络......
  • 【AGC】在AGC平台无法创建应用问题
     关于AGC平台无法创建应用问题。问题背景:cp反馈在AGC平台尝试添加android应用程序,但它只显示web。iOS和Android已禁用。报错截图:​解决方案:检查账户是否已实名认证。......
  • [unity 2d 2021]官方小狐狸项目OnTriggerEnter2D函数问题
    防止遗忘在给小狐狸添加boxcollider和circlecollider时运用OnTriggerEnter2D函数碰撞到Cherry和Gem的时候有时候会出现两次增加原因在于两个collider有时同时碰撞......
  • linux 查看已安装软件
    转至:https://blog.csdn.net/m0_67402731/article/details/126749079接触新的环境新的项目需要先了解当前环境下安装了哪些东西。一、查看系统配置文件(检查已安装的软件)一......
  • react-hook-form 问题记录
    react-hook-form里面如何改变单个字段的校验时机比如email字段不需要在onChange的时候校验就不要用useController钩子给的onChange去改值相反,要用useFormContext给的setV......
  • 关于asan内存检测工具的原理和使用
    Hello,各位看官好,小弟的公司最近开始使用asan这个工具了,最近在晚上查了一下,不查不知道,一查吓一跳,这个工具真的是神一般的工具,所以我就花了一点时间整理了一下asan工具的......