8年经验之谈 —— 服务端性能瓶颈定位思路总结!

01、软件性能测试目标

软件性能测试的目的主要有以下三点:

  • 评价系统当前性能,判断系统是否满足预期的性能需求。

  • 寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题。

  • 判定软件系统的性能表现,预见系统负载压力,在应用部署之前,评估系统性能。

而对于用户来说,则最关注的是当前系统:

  • 是否满足上线性能要求?

  • 系统极限承载如何?

  • 系统稳定性如何?

02、软件性能测试中关键指标

资源指标 

图片

资源指标

  • CPU使用率:

    指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。

  • 内存利用率:

    内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。

  • 磁盘I/O:

    磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。

  • 网络带宽:

    一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。

 系统指标
  • 并发用户数:

    某一物理时刻同时向系统提交请求的用户数。

  • 在线用户数:

    某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。

  • 平均响应时间:

    系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间为3秒左右。

  • 事务成功率:

    性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、保存订单、提交订单操作均可定义为事务

  • 超时错误率:

    主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

03、性能问题排查的过程

在性能测试过程中,如果出现性能问题,需要测试人员重点关注资源指标和系统指标或者应用性能数据,系统指标是直接观测到的测试数据,比如响应时间过长,事物请求成功率低,超时错误率高等等。

当系统指标出现问题时一般会表现在资源指标上,比如cpu高,内存占用多,网络宽带占用高,连接数多等。

当观测到系统资源异常时,比如响应时间长,事物成功率低,超时错误率高等情况时。应该先查应用相关信息,比如日志,应用监控、数据库等等信息,如果这些信息没有问题,再对资源信息进行分析。

资源信息分析如下:

  • CPU问题分析:

    一般情况下CPU满负荷工作,有时候并不能判定为CPU出现瓶颈,比如Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化,即CPU尽可能最大化使用。因此,一般判断CPU为瓶颈,主要从两方面:一是CPU空闲持续为0,二是运行队列大于CPU核数(经验值3-4倍),即可判定存在瓶颈,对于CPU高消耗主要由什么引起的,可能是应用程序不合理造成,也可能是硬件资源不足,需要具体问题具体分析,比如问题SQL语句引起,则需要跟踪并优化引起CPU使用过高的SQL语句。

  • 内存问题分析:

    一般至少有10%可用内存,内存使用率可接受上限为85%。当空闲内存变小时,系统开始频繁地调动磁盘页面文件,空闲内存过小可能是内存不足或内存泄漏引起,需要根据系统实际情况监控分析。

  • 磁盘I/O问题分析:

    磁盘I/O对于数据库服务器、文件服务器、流媒体服务器系统来说,更容易成为瓶颈,一般从以下几个方面对磁盘I/O进行分析判断:

    每磁盘I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

    监控磁盘读写,如果磁盘长时间进行大数据量读写操作,且cpu等待超过20%,则说明磁盘I/O存在问题,考虑提高磁盘I/O读写性能。

  • 网络带宽问题分析:判断网络带宽是否是系统运行性能瓶颈的首要条件是网络带宽是否会影响系统交易执行性能。例如:减小网络带宽,并发用户数、响应时间与事务通过率等性能指标是否不能接受;或者增加网络带宽,并发用户数、响应时间与事务通过率等性能指标会得到明显提高。

在实际性能测试中,如果发现始终报连接超时,而实际手工访问可以正常访问,可以通过ping应用服务器IP或网关IP,如果出现网络严重延迟或丢包,则说明网络不稳定,需要检查网络。

通过对资源指标的分析,实际上各个方面都是互相依赖的,不能孤立的单从某个方面进行排查。

当一个方面出现性能问题时,往往会引发其他方面的性能问题,例如,大量的磁盘读写势必消耗CPU和IO资源,而内存的不足会导致频繁地进行内存页写入磁盘、磁盘写到内存的操作,造成磁盘IO瓶颈,同时,大量的网络流量也会造成CPU过载,所以,在分析性能问题时,需要从各个方面进行考虑。

软件性能测试是执行、监控、分析、调优不断进行的过程,即监控是为分析提供更多的参考数据,分析是为了进行调优,调优是解决当前系统存在的性能瓶颈,为用户提供更好、更快的客户体验。

由于分析、调优需要根据具体问题进行具体分析,本文未做过多说明,只对通用的关键指标进行监控分析,建议在实际工作中可从资源指标与系统指标两个方面,层层检测、步步排查,性能问题就无处藏身,一旦找到出现问题的原因,性能问题也就迎刃而解!

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Asynchronous FIFO and synchronous FIFO-翻译自外网

Synchronous FIFO 先进先出 (FIFO) 是一种非常流行且有用的设计块,用于模块之间的同步和握手机制。 FIFO 的深度: FIFO 中的槽数或行数称为 FIFO 的深度。 FIFO 的宽度:每个槽或行中可以存储的位数称为 FIFO 的宽度。 在同步 FIFO 中&…

特征工程-特征清洗

特征清洗 在进行玩特征理解后,我们大致理解了面对的数据中包含哪些内容。下一阶段,我么需要对数据中的内容进行进一步分析处理,针对不同数据进行清洗。数据清洗是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在…

基于css实现动画效果

介绍 本文将会基于css&#xff0c;实现各种动画效果&#xff0c;接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…

软件测试|Python requests库的安装和使用指南

简介 requests库是Python中一款流行的HTTP请求库&#xff0c;用于简化HTTP请求的发送和处理&#xff0c;也是我们在使用Python做接口自动化测试时&#xff0c;最常用的第三方库。本文将介绍如何安装和使用requests库&#xff0c;以及一些常见的用例示例。 安装requests库 首…

Fenwick Tree——树状数组

问题陈述&#xff1a; 你得到一个长度为 N 的数组为 a0,a1,a2……an-1。处理以下类型的查询&#xff0c;一共有 Q 次查询。 0 p x : ap⬅ap x 1 l r : 打印 ai ( il 到 ir-1 的 ai 之和) 约束&#xff1a; 1 ≤ N,Q ≤ 500000 0 ≤ ai,x ≤ 1e9 0 ≤ p < N 0 ≤ li <…

算法训练营Day43(完全背包[组合排列])

完全背包理论 正序遍历&#xff0c;先背包先物品都可以&#xff0c; 正序遍历的话&#xff0c;之前的物品价值还在&#xff0c;可以用上。 物品和背包都是有前面推出来&#xff0c;都可以。 但是其他的非纯理论的完全背包问题就要看场景&#xff0c;确定先背包还是先物品了 //先…

Google Pixel 与 iPhone手机:哪个更好?

iPhone稳定可靠&#xff0c;Pixel性价比高且创新。两者各有千秋&#xff0c;满足不同需求 谷歌的 Pixel 手机是 Android 最接近 iPhone 的手机&#xff0c;也是真正原生的Android手机。在iPhone 15 Pro Max 与华为 Mate 60 Pro的比较中不难看出&#xff0c;iPhone依然有着极强…

SAP 获取物料/批次/订单的特性值(学习一)

1、事务码 MSC1N、MSC2N、MSC3N 2、常用表 MCH1、MCHA、AUSP、MCH*开头的几个 3、批次 1、创建批次 BAPI&#xff1a;BAPI_BATCH_CREATE 2、修改批次 BAPI&#xff1a;BAPI_BATCH_CHANGE 3、删除批次 BAPI&#xff1a;BAPI_BATCH_DELETE 4、获取批次明细 BAPI&…

vpp node 及 vpp 多线程

node 注册 node注册&#xff0c;即宏VLIB_REGISTER_NODE(x, ...)流程&#xff1a; 创建vlib_node_registration_t x&#xff1b;vlib_node_registration_t结构只是存放了用户提供的node相关信息。把x添加到全局变量vlib_global_main中的node_registrations链表中&#xff08;…

本地开发环境请求服务器接口跨域的问题(vue的问题)

上面的这个报错大家都不会陌生&#xff0c;报错是说没有访问权限&#xff08;跨域问题&#xff09;。本地开发项目请求服务器接口的时候&#xff0c;因为客户端的同源策略&#xff0c;导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况&#xff1a; 可以看到&…

如何在数学建模竞赛中稳定拿奖

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

[三星电子]算法题--两种颜色涂无向图(bfs)

题目 题目描述&#xff1a; 给一无向图中各个节点绘色&#xff0c;一共只有两种颜色&#xff0c;使其满足相邻节点颜色不同&#xff0c;并输出其中一种颜色的节点个数及序号&#xff1b;如果不满足&#xff0c;则输出-1。 示例&#xff1a; 第一行输入节点个数V和边数E&…

数字信号处理实验---Z变换及系统的零极点分析 Matlab代码

一&#xff0e;各种函数的用法 1.tf2zp函数&#xff1a;通常用于将传递函数&#xff08;Transfer Function&#xff09;转换为零极增益形式&#xff08;ZPK form&#xff09;&#xff0c;转换前G(s) num(s) / den(s)&#xff0c;转换后G(s) K * (s - z1) * (s - z2) * ... *…

freeRTOS总结(四)中断管理

1、什么是中断 打断CPU正常运行程序&#xff0c;转而处理紧急的事件&#xff08;中断服务函数&#xff09;。 中断执行机制3步 1、中断请求 2、响应中断 3、退出中断 2 中断优先级 cortex-M使用8位寄存器配置中断优先级 stm32只用到高4位 stm32优先级分为抢占优先级和子优先…

如何测量电源芯片的电压调整率?电源芯片检测系统助力测试

电源芯片电压调整率的测试方法 测试环境&#xff1a; 温度&#xff1a;252℃ 湿度&#xff1a;60%~70% 大气压强&#xff1a;86kPa~106kPa 测试工具&#xff1a;可调电源、可调电子负载、万用表 测试步骤&#xff1a; 1. 设置电子负载&#xff0c;使电源满载输出; 2. 调节电源芯…

LORA的基本原理

本文将介绍如下内容&#xff1a; 什么是Lora高效微调的基本原理LORA的实现方式LORA为何有效&#xff1f; 一、什么是LoRA LoRA 通常是指低秩分解&#xff08;Low-Rank Decomposition&#xff09;算法&#xff0c;是一种低资源微调大模型方法&#xff0c;论文如下: LoRA: Low…

深入理解计算机系统(1):开始

计算机系统是由硬件和系统软件组成的&#xff0c;它们共同工作来运行应用程序。虽然系统的具体实现方式随着时间不断变化&#xff0c;但是系统内在的概念却没有改变。所有计算机系统都有相似的硬件和软件组件&#xff0c;它们又执行着相似的功能。 计算机系统 信息就是位上下…

C++I/O流——(1)I/O流的概念

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 勤奋&#xff0c;机会&#xff0c;乐观…

Nginx配置反向代理实例二

Mac 安装Nginx教程 Nginx配置反向代理实例一 提醒一下&#xff1a;下面实例讲解是在Mac系统演示的&#xff1b; 反向代理实例二实现的效果 使用nginx 反向代理&#xff0c;根据访问的地址跳转到不同端口的服务中 nginx 监听端口为81&#xff1b; 访问地址1&#xff1a;http:/…

QTday4作业

思维导图: widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QTimerEvent> #include <QPushButton> #include <QTextToSpeech> #include <QDebug>namespace Ui { class Widget; }class Widget…