Centos服务器性能瓶颈定位分析【硬件篇】 - 开发说
当前位置: 主页 » Centos » Centos服务器性能瓶颈定位分析【硬件篇】

Centos服务器性能瓶颈定位分析【硬件篇】

      2022年03月05日   阅读 742 次     0 评论   Tags: ·

最近一直在用朋友买的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)
  • 版权声明:本文版权归开发说和原作者所有,未经许可不得转载。文章部分来源于网络仅代表作者看法,如有不同观点,欢迎进行交流。除非注明,文章均由 开发说 整理发布,欢迎转载,转载请带版权。

  • 来源:开发说 ( https://www.kaifashuo.com/ ),提供主机优惠信息深度测评和服务器运维编程技术。
  • 链接:https://www.kaifashuo.com/2325.html
  • 评论(0

    1. 还没有任何评论,你来说两句吧

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注