原 LInux记录内存历史使用情况
在 Linux 系统中,监控内存使用的历史情况可以通过以下几种方法来实现:
1. 使用 sar 命令
sar
是 sysstat
工具的一部分,可以定期记录系统性能数据,包括内存使用情况。
安装 sysstat
1 2 3 4 5 | # Debian/Ubuntu 系统 sudo apt install sysstat # RHEL/CentOS 系统 sudo yum install sysstat |
配置并启用服务
1 2 3 | sudo systemctl enable sysstat sudo systemctl start sysstat sudo systemctl status sysstat |
/etc/sysconfig/sysstat
文件是 sysstat
工具的配置文件,用于控制其日志保留策略、压缩设置和数据收集选项等。sar
生成的日志文件默认存储在 /var/log/sa/
目录下,以下是每个配置项的详细解释:
HISTORY=28
- 含义:设置
sysstat
保存日志文件的时间(单位:天)。 - 详细说明:
- 默认值为 28 天。
- 如果设置为大于 28 天(如 30、60 等),日志文件会被保存在按月份分类的目录中(例如
/var/log/sa/YYYYMM
)。 - 超过保留时间的日志会被删除。
- 含义:设置
COMPRESSAFTER=31
- 含义:指定日志文件在多长时间后自动压缩(单位:天)。
- 详细说明:
- 超过设置的天数后,
sa
和sar
文件将被压缩以节省存储空间。 - 压缩工具由
ZIP
选项指定(如 gzip 或 bzip2)。
- 超过设置的天数后,
SADC_OPTIONS="-S DISK"
- 含义:为
sadc
(系统活动数据收集器)设置参数,控制采集哪些系统指标。 -S DISK
的含义:- 启用磁盘 I/O 统计信息的收集。
- 如果不设置此选项,则不会采集磁盘相关统计信息。
- 其他选项示例:
-S INT
:收集中断统计信息。-S XALL
:收集所有可能的统计信息。
- 含义:为
ZIP="bzip2"
- 含义:指定用于压缩日志文件的工具。
- 详细说明:
- 可选值:
gzip
或bzip2
(或其他系统安装的压缩工具)。 - 默认值为
gzip
,bzip2
压缩率更高,但速度较慢。
- 可选值:
查看内存历史使用
1 | sar -r |
%memused
:已使用内存的百分比。kbmemfree
:空闲内存大小。
字段 | 含义 |
---|---|
kbmemfree | 可用物理内存大小(以 KB 为单位)。 |
kbmemused | 已用物理内存大小(以 KB 为单位)。 |
%memused | 物理内存使用率(kbmemused / 总内存)。 |
kbbuffers | 缓冲区内存大小(以 KB 为单位,用于存储块设备 I/O)。 |
kbcached | 缓存内存大小(以 KB 为单位,用于存储文件系统数据)。 |
kbcommit | 系统承诺分配的虚拟内存大小(以 KB 为单位,可能包含交换空间)。 |
%commit | kbcommit 占总内存(包括交换空间)的百分比。 |
2. 使用 vmstat 命令
vmstat
可以显示系统的内存使用趋势。
查看内存使用历史
1 | vmstat 5 10 |
此命令每隔 5 秒采样一次,共采样 10 次。
3. 使用 free 定时采集数据
通过 cron
定期运行 free
命令,将内存使用情况保存到日志文件。
定时任务示例
创建一个脚本,例如 /opt/mem_usage.sh
:
1 2 3 4 5 6 | cat > /opt/mem_usage.sh <<"EOF" #!/bin/bash echo "$(date '+%Y-%m-%d %H:%M:%S')" >> /var/log/mem_usage.log free -h >> /var/log/mem_usage.log echo "-------------------" >> /var/log/mem_usage.log EOF |
为脚本添加可执行权限: