服务器卡顿之——CPU 性能分析

本贴最后更新于 1268 天前,其中的信息可能已经时移世改

服务器卡顿之——CPU性能分析

相信有工作几年的测试人员,在做测试时,一发现测试环境卡顿,就会想着去看服务器运行状态。

怎么看?

可能大脑里第一反应就是用‘top’,执行top命令,看啥呢?

CPU20201104110442.png

你看这个,啥情况?有人能告诉我,为啥CPU使用率这么低,但是load值缺比较高吗?

不知道原因,但是,知道现在系统load值很高,所以服务器很卡。

今天,我们就来给大家介绍下,怎么看服务器运行情况。

首先,看服务器的运行情况,我们肯定会去看CPU的运行情况。当我们在执行top命令的时候,我们会看到有一个 %CPU(s) 这样一行,这一行,就是显示CPU的运行情况(默认间隔3秒钟更新数据),其中

这些,我们得知道是什么意思。

然后,我们还需要知道,按下数字键 ‘1’,就会看到 %Cpu(0)..... 这样多行,就可以知道当前有多少个活跃的CPU(逻辑)。

那么,接下来的问题就是这些数据分别代表什么意思?与load又是什么关系?

要想弄明白这两个问题,我们得先知道CPU由哪些部分组成及他们之间是怎么工作的。

很多人说,CPU是由三个部分组成,其实,还不准确,准确来说,应该是由4个重要部分组成:计算器、控制器、寄存器和时钟。

CPU20201104135526.png

这张图,相信很多同学都见过,非常形象的描述了CPU内部元件之间的关系。

接下来,我们就来想一下你们公司的产品服务器,是不是在一台服务器上部署产品服务,服务运行起来,普通用户通过操作端,进行操作,从而驱动你们产品的服务进行计算,输出结果给用户。这个计算,就是在CPU内完成的。

好了,大家是否理解了呢?可以对照着第1张图,检验一下,看自己是否弄明白了哦!

第二个问题,CPU的数据与load值之间到底什么关系?load值很大,CPU的数据就一定高吗?

相信,很多人,在没有看过文章第1张图之前,肯定会认为是对的,load值大,CPU的使用率就一定高。因为,普通的认识是,CPU的us + sy的值越接近100,说明CPU越繁忙,load值就应该高,相反,就应该低。其实,在这个里面,存在一个误区。

现在linux服务器的内核,绝大多数都已经升级,超过了2.6版本。在2.6版的内核中,已经把load值的计算方法调整为,所有不可中断睡眠状态的进程,即load average = CPU负载+Disk负载+网络负载+其余外设负载,从第1张图看,就是包含了我们的wa等待负载值。

所以,第1张图中,我们能分析出,目前的服务器存在I/O问题,是因为服务器频繁在执行数据换进换出,导致CPU的wa等待资源时间过长,从而出现load值过高,系统比较卡顿。

回帖
请输入回帖内容 ...