最近一直在用朋友买的ks-le [配置:4c 32G 4T 100M] 做实验,包括k8s/kafka/hadoop等一些实验,使用PVE开出三台
2c4g100g SATA3
配置,其中一台最近登录ssh都会很卡,借此机会聊聊Centos服务器性能瓶颈定位分析,分别从系统负载/CPU/内存/硬盘/网络
方面进行分析,用到的命令sar
。
1、小知识点:如果centos系统并没有此命令,你又不知道需要安装什么软件包时,可以使用 yum provides sar
来确认需要安装什么软件包,可以确认 sysstat
软件包提供 sar
命令,然后 yum install sysstat
即可。
[root@CLOUD-ORI-OVH-US-1 lib]# yum provides sar
Last metadata expiration check: 2:01:16 ago on Sat 05 Mar 2022 08:30:31 AM CST.
sysstat-11.7.3-5.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo : appstream
Matched from:
Filename : /usr/bin/sar
sysstat-11.7.3-6.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo : appstream
Matched from:
Filename : /usr/bin/sar
sysstat-11.7.3-7.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo : @System
Matched from:
Filename : /usr/bin/sar
sysstat-11.7.3-7.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo : appstream
Matched from:
Filename : /usr/bin/sar
2、系统负载/CPU方向:
废话不多说,开始分析,首先 top
查看系统负载,然后 sar
一套流程走完,定位分析。
1、红色框代表:系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
可以观察到系统5分钟、15分钟系统负载已经很高,怎么判断这个值高呢?简单点说就是:和服务器逻辑cpu个数相比,1个逻辑cpu值为1。
所谓的逻辑CPU:
没有开启超线程时,逻辑CPU的个数就是总的CPU物理内核数。
开启超线程后,逻辑CPU的个数就是总的CPU物理内核数的两倍。
经查看我的VPS逻辑CPU为2,理论负载应该<2,而实际已经是2.5倍
。如下图所示,
2、这就代表CPU不够用?需要加CPU吗?不一定,因为大部分程序CPU占用并不高,继续排查,CPU详细信息。
输出项说明:
若 %iowait 的值过高,表示硬盘存在I/O瓶颈
若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。
经此分析,应该是等待I/O的操作较长,可能是硬盘存在性能瓶颈?
3、内存方向:
继续分析,使用 sar -B 1
查看内存页面的统计信息
输出项说明:
经此分析,内存和硬盘频繁交换数据,说明内存也可能存在性能瓶颈,可以考虑增加内存。
4、网络方向:
可以使用命令:sar -n DEV |grep ens18
查看
输出项说明:
经此分析,网卡不是性能瓶颈。
4、硬盘方向:
继续分析,使用sar -d 1
统计磁盘读写情况
输出项说明:
经此分析,磁盘读取量太大,达到性能瓶颈,可以考虑换SSD或者NVME硬盘。
总结:
内存和磁盘已接近性能瓶颈,考虑增加内存和换SSD或者NVME硬盘。
扩展:其他常用的 sar
命令
默认监控: sar 1 1 // CPU和IOWAIT统计状态
(1) sar -b 1 1 // IO传送速率
(2) sar -B 1 1 // 页交换速率
(3) sar -c 1 1 // 进程创建的速率
(4) sar -d 1 1 // 块设备的活跃信息
(5) sar -n DEV 1 1 // 网路设备的状态信息
(6) sar -n SOCK 1 1 // SOCK的使用情况
(7) sar -n ALL 1 1 // 所有的网络状态信息
(8) sar -P ALL 1 1 // 每颗CPU的使用状态信息和IOWAIT统计状态
(9) sar -q 1 1 // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 1 1 // 内存和swap空间使用情况
(11) sar -R 1 1 // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 1 1 // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 1 1 // inode, file and other kernel tablesd的状态信息
(14) sar -w 1 1 // 每秒上下文交换的数目
(15) sar -W 1 1 // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 1 1 // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 1 1 // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)
还没有任何评论,你来说两句吧