Linux 性能 | 内存占用分析

内存占用达到阙值,一直报警,持续了很长时间,由于是正在开发得服务器,并且在假期。直到周一来了才发现。

内存爆满会影响进程运行,使响应变慢,甚至服务挂掉。

学会查看并分析内存信息,及时应对至关重要。


查看内存

最常用得是 freetopvmstat 命令

free

image

top

image

top 进入后,按 M,使得进程按照内存占用排序

尝试停止或重启占用内存较多的进程,很多情况可以及时缓解内存满的情况,

默认情况下,使用后的内存不会自动释放,可以修改/proc/sys/vm/drop_caches

vmstat

image

上面得命令表示,每隔两秒采集一次,共采集 5 次

  • r,表示等待执行的任务数量

  • b,等待 I/O 的进程数量

  • swpd,内存使用量

  • free,空闲内存大小

  • buff,读写缓冲使用量

  • cache,文件系统 cache 占用大小

  • si,每秒从交换区写入内存的大小

  • so,每秒从内存写入交换区的大小

  • bi,每秒读取磁盘块数

  • bo,每秒写入磁盘块数

  • in,每秒中断数

  • cs,每秒上下文切换数

  • us,用户进程执行消耗 CPU 时间

  • sy,系统进程消耗 CPU 时间

  • id,空闲时间,包括 IO 等待时间(us + sy + id = 100)

  • wa,IO 等待时间


分析

内存满了之后看到的信息如下

image
image

  • 连交换空间都占满了,首先服务器的内存实在是太小了,不到 1G!

  • 等待的进程(r,b)比较多,CPU 空闲时间(id)几乎为零,CPU 负荷也很重

  • IO 系列的数值很大(b,bi,bo),输入输出性能很差

针对上面的分析,是因为内存太小给服务器内存扩容后情况好转

除了内存本身的问题,也有可能是:

CPU 瓶颈,IO 系列数值很大后,进一步用iostat观察

③IO 瓶颈,CPU 系列数值很大后,进一步查看load average



本次分析比较简单,就是容量太小,扩大容量即可。

其他情况遇到后再来补充。

正式环境中,监视服务器内存使用情况很有必要,及时发现问题解决问题。

posted @ 2023-05-22 15:42  菜乌  阅读(465)  评论(0编辑  收藏  举报