尝试找出linux服务器性能瓶颈--影响平均负载的几类因素

简介: linux系统的多任务处理能力受到广泛偏好,但性能瓶颈的指标非常繁多。我们今天来看一下如何查看系统性能负载的瓶颈。我们用性能测试的软件模拟下环境。来探究下如何发现真正的性能瓶颈

写在前面:
本篇文章融合了网络上多方的内容进行整合,经过实际操作成功后进行的重新编译。比如问题角度的变换引起的性能测试工具或参数的变动等。某些关键知识点也会有相应的补充。
实验实例采用阿里云ECS产品,参数为2C8G T5型实例,CentOS 7.4系统。除了安装软件的方式有所不同,Ubuntu、rh等其他版本的操作系统同样适用。
用到的工具有stress、stress-ng、sysstat
重要提示:其中sysstat需要更新到最新版本才能反馈iowait等参数变化

Linux 性能优化实践:
当服务器出现性能瓶颈,我们都习惯用top或uptime命令,来查看服务器当前的状态。比如uptime

$ uptime
08:26:48 up 3 days, 17:11, 2 users, load average: 0.00, 0.01,
0.05

展示的字段分别为
08:26:48 当前时间
up 3 days 系统从上次开机开始已经运行了多久
2 users 目前有几个终端连接服务器
后三个数 依次是过去1分钟、5分钟、15分钟的平均负载

平均负载是什么?我们可以执行man 命令,来了解详细解释。
image

简单来说就是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和CPU利用率并没有直接关系。

可运行状态和不可中断状态又是什么?

可运行状态,是指正在使用CPU或者正在等待CPU的进程。
不可中断状态的进程则是处于内核态关键流程的进程,并且不可打断。比如常见的等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态进程。

举个例子:当一个进程向磁盘读写数据时,为了保证数据一致性,在磁盘回复前,他是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了。就容易出现磁盘与进程数据不一致的问题。
所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

因此我们可以简单的认为,平均负载其实就是平均活跃进程数。既然是平均活跃进程数,那么最理想的就是每个CPU上都刚好运行着一个进程,这样每个CPU都得到了充分利用。比如负载是2的时候,就意味着CPU数小于2,就意味着一半的进程需要等待CPU的响应。这里的CPU数,我们在/proc/cpuinfo条目中就可以查看
image


有多少个不同的physical id 就有多少个CPU
siblings记录了对应的物理CPU有多少个逻辑核,逻辑核就是物理CPU用HT技术虚拟出来的逻辑处理单元比如1核2线程。

再为初学者同步一个进程和线程的概念。

一个核心只能同时执行一个线程。进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位。线程是cpu调度和分配的基本单位。我们打开的聊天工具,浏览器都是一个进程。进程可能有多个子任务,比如聊天工具要接受消息,发送消息,这些子任务就是线程。资源分配给进程,线程共享进程资源。关于更进一步的线程消耗我们后续的贴子里讲。

那么有了CPU个数,我们就可以判断出,当平均负载大于CPU个数的时候,系统就出现了过载。不过平均负载有1分钟,5跟中和15分钟。我们要参考哪一个?实际上都要看。比如上午11点的望京站一点都不堵,我们不能判断望京站不堵。那具体我们要怎么看?

1.如果1分钟、5分钟、15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
2.如果1分钟的值远小于15分钟说明最近1分钟负载在减小。相反则说明最近1分钟负载在增加。

如果在实际生产环境中,平均负载高于CPU数量70%的时候,我们就要关注了。

平均负载和CPU利用率

我们在实际工作中,很容易把平均负载和CPU使用率混淆。平均负载指的是平均进程数,它不仅包括了正在使用CPU的进程,还包括了等待CPU和等待I/O的进程。
而CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应,比如:

CPU密集型进程,使用大量CPU会导致平均负载升高。此时两者是一致的。
I/O密集型进程,等待I/O也会导致平均敷在升高,但CPU使用率不一定高。
大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

如果需要看上述三种情况的具体细节,我们可以用iostat、mpstat、pidstat等工具,找出平均负载升高的根源。

下面根据上述的三种情况我们一起来测试一下:

测试前先记录一下一段时间的平均负载
image

场景一:开启一个终端运行stress命令,模拟一个CPU使用率100%的情况。

image
执行Uptime可以看到平均负载上升
image
执行mpstat可以看到一个CPU跑满
image
再开启一个终端运行pidstat来查看哪个进程导致这种情况
image
可以看到是stress进程导致的100%

场景二:开启一个终端运行I/O密集型进程模拟I/O压力, 即不停执行sync(缓存写盘):

(这里使用stress的升级版stress-ng,因为新的虚拟机可能缓存区比较小。做sync操作大部分消耗都在系统消耗内。)
开启终端运行uptime查看平均负载
image
再执行mpstat查看,这次的CPU平均负载升高是因为大量的IO请求待处理。
image
在第三个终端上可以用pidstat查看哪个进程导致了io升高
image
可以看到同样是stress造成的。

场景三:开启一个终端用stress模拟CPU繁忙的场景,由于我们实验实例是2核心的CPU,测试就用4个进程模拟做运算。

image
再用uptime查看下平均负载情况
image
再开启一个终端用mpstat查看CPU使用率的变化情况
image
可以看到平均负载慢慢增加到1.17。另一个终端可以看到CPU利用率为99.8%。iowait只有0.01,说明平均负载升高由于CPU过度繁忙。
我们再用pidstat命令查看那个进程导致CPU飙升,可以看到是我们进行性能测试的stress进程导致。
image

PS:过程中我们试图将stress的 —cpu参数调制100。系统运行基础指令都开始卡顿。

如此我们可以归纳下平均负载

平均负载提供了一个快速查看整体系统性能的手段,反映了整体的负载情况。但只看平均负载本身并不能直接看到问题出现在哪里。所以我们可以关注上述的三种可以使CPU平均负载上升的情况。可以用uptime先看分时段的CPU平均负载。用mpstat查看平均负载升高是由于什么原因。pidstat来查看究竟是哪个进程造成了平均负载的升高。

相关文章
|
1天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
18天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
102 6
W9
|
2月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
140 1
|
1月前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
2月前
|
安全 Linux API
Linux服务器安全
人们常误认为服务器因存于数据中心且数据持续使用而无需加密。然而,当驱动器需维修或处理时,加密显得尤为重要,以防止数据泄露。Linux虽有dm-crypt和LUKS等内置加密技术,但在集中管理、根卷加密及合规性等方面仍存不足。企业应选择具备强大验证、简单加密擦除及集中管理等功能的解决方案,以弥补这些缺口。
39 0
|
6天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
194 86
|
16天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
15天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
|
23天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
7天前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。

热门文章

最新文章