一 sar
指令介绍
在 Linux 系统中,sar
是 System Activity Reporter 的缩写,是一个用于收集、报告和保存系统活动信息的工具。它是 sysstat
软件包的一部分,提供了丰富的系统性能数据,包括 CPU、内存、网络、磁盘等使用情况,sar
命令不仅可以实时地显示系统性能,最重要的还可以从历史数据文件中读取并显示过去的数据。
二 sar 使用
查看系统是否安装有sar,目前我所使用的阿里云,电信云,华为云,好像所有云服务器都安装有,而且也是保存了一个月的记录。
执行sar 默认会显示当前状态的数据如下图:
sar
sar
历史数据通常被保存在 /var/log/sa/
目录下,以特定的命名模式存储,如下图:
通常每天会生成一个文件,每个文件包含了当天每隔一段时间(默认为10分钟)采集的系统数据。
文件名称说明:
- sa:所有的文件以sa作前缀。
- 数字:紧跟在
sa
后面的两位数字代表了月份中的日期。例如,sa01
对应的是当月的第1天,sa02
对应的是当月的第2天,一共有30个文件也就刚好一个月,所以只能保存最近一个月的数据,也就说只能查看最近一个月的数据。
看某个特定日期的 sar
历史数据时,可以使用以下命令格式:
sar -f /var/log/sa/sa01 -参数
-参数:
- 若要查看 CPU 使用情况,可以使用
-u
参数。 - 若要查看内存使用情况,可以使用
-r
参数。 - 若要查看磁盘 I/O,可以使用
-d
参数。 - 若要查看网络 I/O,可以使用
-n
参数。
使用示例:
查看上个月1号的历史记录
#进入日记目录
cd /var/log/sa
#查看上月1号的文件的 cpu使用情况
sar -f sa01 -u
执行后如下图:
从上图可以看出,sar是每10分钟保存一次数据的,对于很多时候用来分析服务器状态也足够了。上图1号的数据,用户使用cpu使用保持在1.5左右,空闲率持续97% ,cpu占用曲线整体很平衡。
再查2号的cpu使用数据就发现问题了,4点开始cpu占用突然升高且持续到4点30分,如下图:
sar -f sa02 -u
这里候我们可以结合这以上这个时间点是分析我们的项目日记还有网络流量,数据库日记。往往很快可以找到问题。
三 pidstat 使用
上面的sar只可以定位时间,无法定位哪个进程使用cpu,如果还能找到问题可以使用pidstat进一步定位进程,是哪个进程占用这么高。
执行 pidstat,如下图:
pidstat
数据量有点多,我们只要占用最高那10条记录即可:
pidstat -r | sort -k 8 -r -n | head -n 11
执行后如下图:
我们就以这个为基础通过定时任务去运行记录进程占用高的数据:
crontab -e
*/5 * * * * /usr/bin/pidstat -r | sort -k 8 -r -n | head -n 11 >> /var/log/pidstat.log
一个定时器每5分钟记录一次最高的进程数据 ,创建成功,如下图:
查看定时任务:
crontab -l
定时任务运行后,查看占用日记如下:
这里每隔5分钟记录一次,这里可以根据问题发生的时间自己改写。这样可以解决查看历史cpu占用率的问题。