掌握这条Linux命令,服务器性能问题一网打尽
首先我自己都感到不好意思,这个命令几乎没有用过(尴尬)。最近在翻查Linux的一些命令,发现自己居然对它很陌生,所以赶紧恶补一下,扩充一下自己。
sar命令简介
sar
它的英文全称是:System Activity Reporter,意为系统活动情况报告。是目前 Linux 上最为全面的系统性能分析工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。因此可以用它来找出一些性能问题,帮助我们提升服务器的性能做出很好的决策指引。
sar命令格式讲解
sar [options] [-o filename] interval [count]
在上述命令格式中,各参数的含义如下:
-o filename:filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中 interval:采样的间隔时间,需要手动设置 count:采样的次数,可以自定义,默认是为1 options:命令选项,大概有十来种,详细如下表格
选项值 | 选项说明 |
---|---|
-A | 显示系统所有资源设备的运行状况 |
-u | 显示系统所有CPU的负载状态。 |
-d | 显示系统所有硬盘设备的活动信息 |
-r | 显示系统内存和交换空间的情况 |
-b | 显示I/O和传送速率情况 |
-n | 显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等 |
-q | 显示运行列表中的进程数、进程大小、系统平均负载等 |
-R | 显示进程在采样时的活动情况 |
-y | 显示终端设备的活动情况 |
-w | 显示系统交换活动的状态 |
以上只是列出来了部分选项,更多的选项可以通过man sar
来查看。
使用举例
1、比如我们想要查看系统CPU的整理状况,每3秒统计一次,总共统计4次,可以执行:
sar -u 3 4
执行结果如下图:
在执行结果中,总共有8列,第一列很清楚的知道是统计时间,第二列表示是所有cpu。
%user:用于表示用户模式下消耗的 CPU 时间的比例; %nice:CPU处在带NICE值的用户模式下的时间百分比例; %system:系统模式下消耗的 CPU 时间的比例; %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例; %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例; %idle:CPU 空闲时间比例。
通过上面对结果列的解释,我们应该需要注意的是iowait
和idle
,如果 iowait
的值偏高,则表示遇到了I/O瓶颈;idle
值偏高,则表示CPU比较空闲。如果idle
值高但系统响应比较慢,有可能这个时候CPU在等待内存分配,这个时候我们应加大内存容量。如果idle
值如果一直偏低,一般情况大家都认为低于10,那么我们就需要解决cpu的问题。
2、比如我需要查看内存的使用情况,每3秒统计一次,总共统计5次,可以执行:
sar -r 3 5
执行结果如下图:
各列的说明如下:
kbmemfree:这个值和我们执行 free
命令之后的free
列值会基本一致,它不包含缓存和缓冲空间(buffer和cache的空间)kbmemused:这个值和我们执行 free
命令之后的used
列值会基本一致,它包括buffer和cache的空间%memused:kbmemused值和内存总量的一个百分比 kbbuffers和kbcached:这两个值就是free命令中的buffer和cache kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap) %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比 kbactive:活动内存量 kbinact:不活动内存量 kbdirty:等待写入磁盘的内存,以KB为单位
3、如果想要查看系统磁盘的读写性能,每3秒统计一次,总共统计5次,可执行如下命令:
sar -d 3 5
执行结果如下图:
各列的说明如下::
tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的 rd_sec/s:每秒读扇区的次数 wr_sec/s:每秒写扇区的次数 avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区) avgqu-sz:磁盘请求队列的平均长度 await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒) svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间 %util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和
这里我只演示了几个参数的使用讲解,关于其他参数的用法,大家可以自行运行进行查看。欢迎一起交流学习。
- END -
推荐阅读:
每日打卡赢积分兑换书籍入口
这样操作后,我们每次新的推送才能第一时间出现在你的订阅列表中~