首页 帮助中心 新加坡云服务器 Linux 云服务器内存使用率过高怎么办
Linux 云服务器内存使用率过高怎么办
时间 : 2024-08-21 13:42:51 编辑 : 华纳云 阅读量 : 236

使用Linux 云服务器过程中可能发生因内存占用过多而引发的故障,如系统内部的服务响应缓慢,服务器连接不上,出发OOM等。当Linux 云服务器内存使用了持续高于90%时,就会被判断为内存使用率过高。确定Linux 云服务器的故障是因为内存使用率过高,怎么解决?

在系统内部执行 top 命令后按 M,查看 RES 及 SHR 列是否有进程占用内存过高。

如果内存过高,执行以下命令,查看共享内存占用是否过高。

cat /proc/meminfo | grep -i shmem

返回结果:

[root@

/****

~]#t cat /proc/meminfo |grep -i shmem

 

Shmem :****556 kB

执行以下命令,查询不可回收的 slab 内存占用是否过高。

cat /proc/meminfo | grep -i SUnreclaim

返回结果:

[root@

****

~]# cat /proc/meminfo |grep -i sUnreclaim

 

sUnreclaim:    13780 kB

执行以下命令查看是否存在内存大页:

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 命令取消内存大页。

当实例内存未耗尽但是却触发了OOM,可能原因是内存使用率过高,进程数超限,系统可用内存低于 min_free_kbytes 值。检查内存占用率过高可参照上文方法,如果是进程数超限,先登录华纳云云服务器执行以下命令查看min_free_kbytes 值。

sysctl -a | grep min_free

min_free_kbytes 值单位为 kbytes,如下所示 min_free_kbytes = 1024000 即为1GB。

[root@****

]# sysctl -a

 :grep

 min_free

m.min_free kbytes = 124000

执行以下命令,使用 VIM 编辑器打开 /etc/sysctl.conf 配置文件。

vim /etc/sysctl.conf

按i进入编辑模式,修改vm.min_free_kbytes 配置项。若该配置项不存在,则直接在配置文件中增加即可。最好修改vm.min_free_kbytes 值不超过总内存的1%即可。

按ESC并输入:wq,按Enter保存推出vim编辑器。执行以下命令,使配置生效即可。

sysctl -p

检查系统可用内存是否低于 min_free_kbytes 值

可能是由系统可用内存低于 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,则系统会自动重启。

华纳云 推荐文章
新加坡vps服务器使用MTU、TCP调优 新加坡云服务器不支持SSL怎么办 linux kvm安装的详细步骤 本地连接Windows云主机连接不上怎么办? linux云主机如何查看redis内存使用情况? 为什么Ubuntu无法运行yum,是什么原因 Linux系统下如何搭建FTP服务器? 怎么在linux系统中进行数据库备份? linux中怎么关闭nginx服务自动启动? windows 11怎么清除dns缓存?
客服咨询
7*24小时技术支持
技术支持
渠道支持