应用服务器,突然内存占用很高导致系统读写、运行速度慢
问题分析步骤:目前,监控平台使用的数值来自 Mem 行,计算公式为(1-available/total)
因此,当监控平台显示内存使用率处于较高水平时,即为 available 项数值处于较低水平。此时,情况可分为 used 占用较高、shared 占用较高、buff/cache 占用较高以及使用 swap 四种情况。

首先使用 top 命令然后 shift+m 按照内存排序看看什么进程占用的内存过大,然后进行问题分析,如果为应用进程则需要和应用厂商沟通。
通过 free -m -t 查看内存的使用情况,看看内存主要是正在使用还是共享或者在缓存中,分析整个系统的内存使用情况。
1)used 占用较高
出现 used 占用较高的情况最为常见,先查看/proc/meminfo 内容,命令如下:
\# cat /proc/meminfo
输出结果中需要关注内存大页总值 HugePages\_Total 和内存大页未使用值HugePages\_Free。内存大页默认单位为 2MHugePages\_Total 的值乘以 2M 即为内存大页占用的内存大小。如果 HugePages\_Free 的值相比 HugePages\_Total 的值较大,说明内存大页容量配置不合理,可以考虑适当缩小。例如,某些 oracle 数据库服务器出现内存占用率较高情况,检查/proc/meminfo 发现配置了内存大页,且内存大页占总物理内存超过 60%。再加上数据库程序本身占用的内存,总体内存使用率在 90%左右。由于内存大页的总量需要根据物理内存的大小进行配置,如果配置比例不合适,在运行过程中就会出现由于内存大页占比较大,导致内存占用率较高的情况。
如果经检查发现未启用内存大页,或者启用了内存大页但是使用正常,则通过 top 工具粗略地查看各个进程使用内存情况。输入命令 top 后,可以按“m”键将进程按内存使用率进行排序,命令如下:
#top
输出结果中需要关注 RES 项。该项表示进程占用的物理内存大小。如果某个或者某些进程的 RES 值较高,则需要对该进程进行分析,判断是否占用过多存在异常,是否需要加以限制。如果均为正常占用,则考虑内存扩容。
2)shared 占用较高
Shared 占用部分是多进程共享内存。如果内存使用率处于较高水平,且shared 占用较高时,可以执行以下命令查看详细信息:
\# df -h | grep tmpfs

默认配置下,目录/run、/sys/fs/cgroup 和/dev/shm 都会占用 shared 内存。因此,通过 du 命令逐级锁定占用较大的文件或目录,根据文件或目录的归属确定导致 shared 占用较大的进程或程序。定位后,调整进程对应的应用程序,减少其占用或者进行清理。
3)buff/cache 占用较高
在内存调度中,buff/cache 主要用于缓存读写文件系统的数据。所以,如果内存使用率处于较高水平,且 buff/cache 占用较高时,可以执行以下命令查看详细信息,如图所示。查看输出内容的 CACHE SIZE 项,找到占用较多的内核调用。从内核调用的名称(NAME 项),可以判断出占用较大内存是 xfs 文件系统或是 nfs 文件系统等。
\# slabtop -s c

由于 buff/cache 占用较高与 IO 有较大关系,所以可以执行以下命令查看系统 IO 情况及对应的进程,定位进程后,需要结合 IO 进行分析,讨论优化方案。
\# iotop -o

4)使用 swap
通常情况下,swap 不会被使用。一旦 swap 被使用,意味着系统内存非常有可能不足,需要扩容。出现 swap 被使用的情况,一般也会存在 used 占用较高或者 buff/cache 占用较高的情况。由于使用 swap 时,内核将不常用的内存数据移至本地 swap 文件系统,当调用时再将数据从本地 swap 文件系统移回内存,效率较低。所以,不推荐日常使用 swap。如果需要,可以通过以下简单命令弄清哪些进程使用了 swap:
grep swap /proc/\[1-9\]\*/smaps
- 银河麒麟高级服务器操作系统-V10-SP1-应急操作手册
- 1.软件信息
- 1.1操作系统信息
- 1.2产品特点
- 2.文件系统变成只读
- 3.单用户找回root密码
- 4.主机启动时fstab中有错误配置
- 5.文件系统使用率突然持续增加并超过90%,需要紧急在线扩容
- 6.文件系统读写慢,如何排查问题?
- 6.1系统CPU使用率高
- 6.2系统内存占用高
- 6.3系统IO占用高
- 6.4系统中存在僵尸进程
- 7.救援模式、单用户模式的使用场景及使用方法
- 7.1使用场景
- 7.2使用方法
- 8.网卡驱动是否正常加载
- 9.升级系统网卡驱动后,无法识别网络设备
- 10.网络通讯是否正常
- 11.网络连接数查看及排查
- 12.图形界面登录闪退,或输入正确用户名密码重新跳转到登录界面
- 13.DNS解析缓慢、SSH登录缓慢问题解决