知易网
白蓝主题五 · 清爽阅读
首页  > 硬件维护

查看服务器内存使用情况的实用方法

服务器跑着跑着突然变慢,页面打不开,后台任务卡住,第一反应往往是:是不是内存又满了?内存用得太多,系统就开始用硬盘当内存使,俗称“交换”,这速度自然就下来了。这时候,得赶紧上服务器看看内存到底啥情况。

常用命令:free

最简单的办法是用 free 命令,登录服务器后直接敲:

free -h

加个 -h 是为了让数字看起来更直观,比如显示成 MB 或 GB。输出里重点关注 available 这一列,它告诉你现在还能用多少内存。别光看 free,那个只是完全空闲的,Linux 会用多余内存做缓存,看着像占满,其实不影响。

实时监控:top 和 htop

想看看哪个进程在“吃”内存,top 就派上用场了:

top

进去之后按 M(大写),列表会按内存占用从高到低排序。一眼就能看出是 MySQL、Java 还是某个 Python 脚本在捣鬼。

如果服务器装了 htop,体验更好,彩色界面,支持鼠标操作,信息也更清晰。没装的话可以先用包管理器加上:

sudo apt install htop  <!-- Debian/Ubuntu -->
sudo yum install htop    <!-- CentOS/RHEL -->

查看详细信息:/proc/meminfo

系统底层的内存数据都藏在 /proc/meminfo 里,直接看:

cat /proc/meminfo

这里的信息最全,比如 MemTotal 是总内存,MemAvailable 是可用的,还有缓冲区、缓存等细节。虽然信息多,但日常排查看前几行就够了。

警惕交换分区(Swap)

有时候物理内存还有剩,但系统已经开始用 Swap,说明内存压力不小了。用 free 命令时注意 Swap 那一行,如果 used 持续增长,就得警惕了。长期依赖 Swap,服务器响应会明显变慢,特别是数据库类服务。

脚本化监控小技巧

如果你管着好几台服务器,可以写个简单脚本定时检查:

#!/bin/bash
echo "=== 内存使用情况 ==="
free -h | grep Available
echo "=== 占用最高的3个进程 ==="
ps aux --sort=-%mem | head -4

存成 check_mem.sh,加执行权限,定时跑一下,结果发到邮箱或者钉钉,提前发现问题。

内存问题不像硬盘满了那么直观,但影响更隐蔽也更严重。平时多瞄两眼,出事时才能快速定位。别等到用户投诉了才登上去看,那时候可能已经卡了一阵子了。