性能测试指标解析

系统性能测试指标
1.并发数:同一时间与服务器进行交互的用户数。
绝对并发:同一时刻(即同一时间点)并发对服务器同时发出请求。
相对并发:指一段时间内(即同一时间区间)并发用户对服务器发送请求。
2.响应时间:事务请求到结束全程消耗的时间总和(包括应用服务器处理时间,网络传输时间,以及数据库服务器处理时间)
3.点击量/点击率:
点击量:衡量网站流量的一个指标,也就是点击数,是对网站点击数据的统计
点击率:点进率,指网站上某一内容被点击的次数与整个网站内容被显示次数之比。(反映受关注程度)
性能测试领域指单位时间内页面点击的次数,即每秒发送的http请求数量。点击率越大对服务器造成的压力越大,对服务器的性能要求越大。
4.吞吐量/吞吐率
吞吐量:指系统处理客户请求数量的总和,可以指网络上传输数据包的总和。也指业务中客户端与服务器交互数据量的总和。
吞吐率:单位时间内系统处理客户请求的数量,也指单位时间内的吞吐量。
从业务角度:单位时间的请求数,页面数。即请求数/秒,页面数/秒
从网络角度:单位时间网络中传输的数据包的大小,即字节数/秒等
从系统角度:单位时间内服务器所承受的压力,即系统的负载能力
吞吐量/吞吐率是一种多维度量的性能指标,与请求处理所消耗的cpu,内存,io和网络带宽都有关。
5.TPS/QPS
TPS:单位时间系统处理的事务量,事务可以是用户自定义的一系列的操作或动作的集合。(以单接口事务为例,每个事务包括以下3个过程:1.向服务器发送请求,2.服务器自己的内部处理(包括应用服务器、数据库服务器),3.服务器返回结果给客户端)
TPS反映了系统同一时间内处理业务的最大能力,数据越高,处理能力越强。
QPS:单位时间内查询或访问服务器的次数。
TPS和QPS的区别:一个事务可以包含多次查询或访问服务器,也可以查询或访问服务器一次。当多次查询,一个TPS相当于多个QPS;只查询一次,一个TPS等价于一个QPS.
TPS(QPS)=并发数/平均响应时间
HPS(每秒HTTP请求数):每秒点击次数,在一秒中的时间内用户对web页面的链接、提交按钮等点击总和,是b/s系统中重要的性能指标。
6.PV/UV:
pv/uv是衡量web网站性能容量的两个重要度量指标,常用作电子商务网站领域用来衡量网站的活跃度。
pv 是页面的浏览量或点击量,用户对系统或者网站任何页面的每一次点击或访问都会被记录一次浏览量或点击量,对相同页面进行多次访问浏览量或点击量也会进行累计。
uv 系统或网站的独立访客,一段时间内相同客户端访问系统或网站只会被记录一次,连续重复访问或者浏览多个系统页面次数不会进行累计。

CPU负载
定义:CPU平均负载(load average)是指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1(单核)。
理解:
如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;系统负荷1.0,意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

CPU平均负载计算的是一段时间内的平均值,分别为 1、5 和 15 分钟值。
CPU负载是基于内核数来计算的,有一个说法,“有多少内核,即有多少负载”,核数=最大负载。
CPU负载小于等于0.7算是一种理想状态,0.7乘以内核数,得出服务器理想的CPU负载。
例如:
假设我们有一个单核系统,我们的 CPU 平均负载始终低于 0.6。这表明每个需要使用 CPU 的进程都可以立即使用它,而无需等待。如果 CPU 平均负载大于 1,则表示有进程需要使用 CPU,但由于 CPU 不可用,目前无法使用。
但是,多处理器系统中高于 1 的平均负载不会成为问题,因为有更多内核可用。
uptime命令为我们提供了以 1、5 和 15 分钟为间隔的平均负载视图:
在这里插入图片描述
uptime 命令用于显示系统运行时间及负载。
uptime 命令可以打印出系统总共运行了多长时间和系统的平均负载。uptime 命令显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。
注意:一般看5或15分钟的平均值,短期内达到最大负载,可以不予处理。
如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。
如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。
一般来说,主要观察"15分钟系统负荷",将它作为服务器正常运行的指标。

查看每个物理CPU中core的个数(即核数):cat /proc/cpuinfo| grep “cpu cores”| uniq

什么情况下导致CPU负载?
1.进程占用大量 CPU。Linux 系统中的进程通常运行很频繁,当运行慢的进程会占用大量的 CPU 时间,会导致 CPU 的负载增高。此时可以使用 top 命令来检查 CPU 负载。
运行的程序太多造成的,尤其是大型程序软件,比如说设计类软件,或者是大型游戏运行,都会导致CPU负载。
2.后台程序异常占用 CPU。后台有使用cpu的软件在运行或后台程序升级,导致你在这个情况下继续正常使用,cpu要兼顾后台程序还需要兼顾你前台的正常使用。
当用户更改了系统配置,安装新的软件等情况后,会引起 Linux 系统中后台进程突然多次运行,造成 CPU 负载明显增高。此时可以使用 ps 命令检查后台进程,确定哪个后台程序异常占用 CPU ,最后可以使用 kill 命令强行结束该进程,释放 CPU 负载
3.硬件配置:核心偏少,主频偏低,性能差,配置不足
4.内存不足也会引起系统 CPU 高负载。由于内存容量不足,系统就会不断的进行 I/O(输入/输出)操作来进行磁盘和内存之间的数据交换,从而导致 CPU 负载增加。此时我们可以使用 vmstat 命令来检查系统的内存使用情况,可以考虑增加内存容量,以便减轻 CPU 的负载
5.病毒:中了病毒和木马,用资源管理器看看都是什么程序在使用cpu(windows)

如何监控?
1.Linux:使用top命令监控系统CPU使用情况,及各个进程的CPU负载。优化应用程序的代码、增加硬件资源、调整进程的优先级等。
2.uptime 命令用于显示系统运行时间及负载。
uptime 命令可以打印出系统总共运行了多长时间和系统的平均负载。uptime 命令显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。
3.vmstat查看cpu负载命令:vmstat 3 4
字段说明:
在这里插入图片描述
如何解决CPU负载过高?
1.调整CPU调度策略,大多数Linux发行版都使用CFS作为默认的调度策略,对于某些特定的应用场景,如实时或高性能计算,可能需要使用更高效的调度策略。可以通过修改/proc/sys/kernel/scheduler文件来切换调度策略。
2.在多核系统中,CPU亲和力可以将进程固定在特定的CPU核心上运行,避免频繁的核心切换带来的性能损失。
3.使用任务调度器来优化CPU负载:Linux系统提供了多个任务调度器,如cron、at和anacron等。可以使用这些调度器来安排任务在系统闲时运行,避免在高负载期间执行计算密集型任务。
4.节能策略来降低CPU负载:Linux系统提供了多个节能策略,如CPU频率调整、休眠状态、功耗管理等。可以使用命令如cpupower、powertop、acpid等来管理和优化系统的节能策略。
5.优化硬件资源配置:增加CPU数量和CPU内核。

CPU使用率
CPU利用率:显示的是程序在运行期间实时占用的CPU百分比。用户 CPU 使用率反映了应用程序的繁忙程度
注意:CPU利用率高,并不意味着CPU的负载大。两者之间没有必然的关系。
负载与使用率分析
1.负载高、使用率低
说明等待执行的任务很多。很可能是进程僵死了。通过命令 ps -aux 查看是否存在D状态的进程,该状态为不可中断的睡眠状态。处于D状态的进程通常是在等待IO,通常是IO密集型任务,如果大量请求都集中于相同的IO设备,超出设备的响应能力,会造成任务在运行队列里堆积等待,也就是D状态的进程堆积,那么此时Load Average就会飙高。
什么是多任务操作系统
Linux操作系统能够同时处理几个不同名称的任务。但是同时运行多个任务的过程中,cpu和磁盘这些有限的硬件资源就需要被这些任务程序共享。即便很短的时间间隔内,需要一边在这些任务之间进行切换到一边进行处理,这就是多任务。
运行中的任务较少的情况下,系统并不是等待此类切换动作的发生。但是当任务增加时,例如任务A正在CPU上执行计算,接下来如果任务B和C也想进行计算,那么就需要等待CPU空闲。也就是说,即便是运行处理某任务,也要等到轮到他时才能运行,此类等待状态就表现为程序运行延迟。
2.利用率高、负载低
说明任务少,但是任务执行时间长,有可能是程序本身有问题,如果没有问题那么计算完成后则利用率会下降。这种场景,通常是计算密集型任务,即大量生成耗时短的计算任务。
3.使用率低、负载低、IOPS 高
通常是低频大文件读写,由于请求数量不大,所以任务都处于R状态(表示正在运行,或者处于运行队列,可以被调度运行),负载数值反映了当前运行的任务数,不会飙升,IO设备处于满负荷工作状态,导致系统响应能力降低。
在这里插入图片描述
内存使用率:
在使用Linux系统的过程中,有时会遇到内存使用率过高的问题。随着系统运行时间的增加,特别是在长时间运行大型应用程序或多个应用程序同时运行的情况下,内存使用率可能会显著增加,最终导致系统性能下降甚至系统崩溃。
什么情况导致内存使用率过高?
1.异常进程占用了大量 CPU 或内存资源。
2.内存泄漏
3.大量缓存或缓冲区占用
什么是内存泄漏?
内存泄漏一般指的是堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示的释放的内存。应用程序一般使用malloc、realloc、new 等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用 free 或 delete 释放该内存块。否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。(程序没有正确地释放申请的内存空间)

如何表现?如何查看?
查看系统的内存使用情况的命令:如free、top或htop等。这些命令可以显示当前系统的内存使用情况,并列出占用内存最多的进程。
1.代码检查阶段,分析代码逻辑,开发可查
2.系统报告没有足够内存,导致系统或程序崩溃;可监控内存使用情况
3.通过监控内存使用情况,主要查看哪些异常进程占用了大量内存资源;检查进程内存占用
4.通过内存泄漏检测工具:mtrance,memwatch 等
查看内存泄漏的命令:
ps 命令
ps -ef | grep 进程关键字 //查看指定进程的信息
ps -aux // 列出当前内存中的所有进程
ps aux --sort=%mem(或者 ps aux --sort %mem) //按照内存占用率的升序排序
ps aux --sort=-%mem (或者 ps aux --sort -%mem) //按照内存占用率降序排序
top 命令:能够实时显示系统中各个进程的资源占用状况
free 命令:free 命令可以显示当前系统内存使用情况,主要用于确定设备是否存在内存泄漏。free 命令中的信息都来自于 /proc/meminfo 文件。
cat /proc/meminfo 命令:用来查看 Linux 系统的内存使用情况。
MemTotal: 应用可以使用的内存总数
MemFree: 当前空闲的内存数目
MemAvailable: 可用内存(MemFree + 可回收的内存),系统中有些内存虽然已被使用,但是可以回收,如cache、buffer、slab都有一部分可以回收。
Buffers: 用来给文件做缓存大小

cat /proc/$pid/status 命令:用来查看某个进程的内存使用信息。

内存使用率过高优化
1.优化应用程序的内存使用:
如果发现某个应用程序占用大量内存,可能是因为该程序存在内存泄漏,或者使用了过多的内存缓存。可以通过检查和修改应用程序的代码,优化内存使用。例如,及时释放不再使用的内存,减少缓存的大小或调整缓存的刷新策略,以减轻内存压力。
2.调整系统的内核参数:
在大多数Linux系统中,有一些内核参数可以用于调整内存管理的行为。例如,可以调整内核参数vm.swappiness来控制系统将内存数据交换到磁盘的程度。通过降低该参数的值,可以减少内存交换的频率,改善系统的响应速度。另外,可以调整内核参数vm.vfs_cache_pressure,该参数控制系统如何回收内存缓存。通过增加该参数的值,可以促使系统更积极地回收不再使用的内存缓存,以释放更多的可用内存。
3.增加物理内存或交换空间:
如果经过上述优化后,内存使用率仍然过高,可能需要考虑增加系统的物理内存或交换空间(Swap)。增加物理内存可以提供更多的可用内存空间,而增加交换空间则可以作为物理内存的延伸,将部分内存数据交换到磁盘上。当然,增加物理内存或交换空间需要根据系统的硬件和需求来决定。
4.关闭不必要的服务或进程:
有时系统中可能会有一些不必要的服务或进程运行,占用了大量的内存资源。可以通过关闭一些不必要的服务或进程来释放内存。例如,可以通过停止不需要的网络服务或卸载不使用的应用程序来减少内存使用。

磁盘IO
磁盘性能主要经常会看磁盘i/o使用率、iops、吞吐量、i/o响应时间等,常用命令sar、iostat、dstat
在这里插入图片描述
磁盘I/O使用率:是指磁盘在一定时间内被读写的比例,是衡量磁盘性能的重要指标之一。如超过 80%意味着磁盘 I/O 存在性能瓶颈。
%util值 衡量IO的繁忙程度,这个值越大,说明产生的IO请求较多,IO压力较大。
如果 %util 接近 100% ,表示磁盘产生的 I/O 请求太多,I/O 系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)
磁盘IO使用率与系统负载也有关:当系统负载较高时,磁盘IO利用率会相应增加。例如:进行大量文件读写,数据库操作,网络传输任务时,磁盘IO使用率较高,系统空闲时,磁盘IO使用率较低。

IOPS
每秒I/O请求数:一次磁盘的连续读或者连续写称为一次磁盘I/O,就是每秒磁盘连续读次数和连续写次数之和。代表着磁盘的读写速度。
磁盘的IOPS越高,读写速度也就越快

吞吐量
单位时间内可以成功传输的数据数量,每秒I/O请求的大小。对于大量顺序读写的应用,更关注吞吐量指标。其单位一般为kbit/s、MB/s等。
磁盘的吞吐量越高,数据的传输速度也就越快。
例如:单个1GB大文件增量同步时,源端和目标端磁盘IO每秒写数据量增高,对于文件服务器,磁盘读写速度突增可能会增加资源消耗。

如何查看IO命令:
iostat -d -x -k 1 2 查看磁盘是否达到瓶颈(或者:iostat -x 1 2,其中, “-d”参数代表查看磁盘性能,“-p”参数代表将 dev 设备按照 sda,sdb……名称显示,“1”代表每隔1s采取一次数值,“2”代表总共采取2次数值。 ),实际使用中主要还是看 await 、 svctm 、 %util 参数
await:平均每次设备I/O操作的等待时间(毫秒)。(衡量IO的响应速度)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的 (衡量 IO 的繁忙程度)
iotop命令:查看占用IO的较高的进程
pidstat -d 1 查看占用IO的较高的线程
fdisk -l :查看磁盘信息,包括磁盘容量,扇区大小,IO 大小等信息
df :查看磁盘使用情况,通常看磁盘使用率

如何解决磁盘IO过高
1.定位问题,查看哪些进程占用IO资源,通过top、iotop等命令,若为数据库大量写入操作导致,可以将数据库操作分批次进行
2.调整系统参数:通过系统参数来优化磁盘IO性能,修改文件系统的inode参数,调整磁盘调度算法
3.优化应用程序:通过代码优化等方式,减少磁盘IO操作次数。
程序优化解决:https://zhuanlan.zhihu.com/p/572855548

网络IO
通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。

带宽,表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。
吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。
延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。
PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。
除了这些指标,网络的可用性(网络能否正常通信)、并发连接数(TCP 连接数量)、丢包率(丢包百分比)、重传率(重新传输的网络包比例)等也是常用的性能指标。
dstat -t -n查看网络情况
查看监控服务器带宽配置:
1.查看服务器网络端口:ifconfig
2.查看带宽大小:sudo ethtool xxx 例如:sudo ethtool eth0
监控记录网络IO带宽占用,一般来说带宽使用率大于85%可能存在性能瓶颈。
带宽使用率过高,性能低下的原因?
1…由于网络带宽不足、网络抖动或者服务器端的相关参数配置导致的。
2.恶意程序后台运行,产生了大量入网流量
如何排查?
1.服务器外网带宽被占满时,如果通过远程无法登陆,可通过阿里云终端管理进入到服务器内部,运行下面命令查看流量占用情况:
iftop -i eth1 -P iftop -i eth0 -P
注:-P 参数会将请求服务的端口显示出来,也就是说是通过服务器哪个端口建立的连接,看内网流量执行 iftop -i eth0 -P 命令
执行 netstat 命令反查 对应 端口对应进程,如:netstat -tunlp |grep pid
2.可采用ping命令查看ping的延时是否在合理范围,是否有丢包现象
在局域网当中,ping延时0~1ms为正常,超过10ms时需要关注网络问题。
在广域网中,ping延时30ms内为正常。
3.更准确的方法:采用专业的网络设备在网络设备的端口处进行报文捕获和计算分析

如何解决网络宽带不足的情况?
1.优化传输数据量的大小,以降低带宽的压力
2.如果确定是恶意程序,可以通过 kill -TERM 来终止程序。
3.升级服务器宽带配置(若是 Web 服务程序,则可以使用 iftop 等工具来查询具体 IP 来源,然后分析 Web 访问日志是否为正常流量,日志分析也可以使用 logwatch 或 awstats 等工具进行分析,若确定是正常的流量,则可以考虑升级服务器的带宽)
————————————————

原文链接:https://blog.csdn.net/qq_58635232/article/details/129919877

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值