电商平台性能测试报告

article/2025/8/14 9:25:46

                                                                    性能测试报告

  1. 概况

A3Mall是一个电商系统平台,是一个面向B2B、B2C的电商平台。

1.1测试背景

A3Mall电商平台通过体验用户反馈业务市场调研及分析,项目部门与业务部门进行交流沟通,确保用户反馈后的有效需求说明书,参照用户需求绘制产品规格书。

1.2测试目的

编写本文档的目的是用于指导A3Mall 1.3系统的性能测试。

    主要从测试环境、测试工具、测试策略、测试具体执行方法、任务与进度表等事先计划和设计。 

1.3测试范围

本次测试主要是对A3Mall电商系统的性能测试。

1.4测试指标

详细文档可参考

 

2.测试工具及环境

2.1基本配置

设备

IP地址

硬件配置

软件配置

负载机

https://www.huaweicloud.com/product/cpts.html

云端设备

云性能测试服务 CPTS

服务器

https://jmeter.apache.org/

本地

Jmeter


2.2测试工具 

a.压测工具:jmeter、loadrunner、云性能测试服务 CPTS

b.监控工具:Nmon工具

2.3人力安排

角色

数量/具体人员

职责

测试组长

1/XXX

编写测试计划

测试工程师

1/XXX

进行性能压测进行并发测试

2.4项目工作量

任务

开始时间

结束时间

总计(天数)

总计(人时)

计划

2021/7/27

2021/7/28

1

     24

实际

2021/7/27

2021/7/28

1

     24

3.测试内容

3.1单场景基准测试模型

描述测试场景秒杀

场景

运行场景设置

测试点

秒杀

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

拼团

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

领券

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

团购

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

会员特价

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

积分商城

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

我要签到

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间

购物车

单用户无其他压力情况下,迭代执行脚本

查看平均响应时间


3.2单场景容量测试模型 

描述测试场景秒杀

场景

并发用户数

运行场景设置

测试点

秒杀

500个人逐步递增的方式

持续时间40分钟

查看各项性能指标,获得其最大的并发数

拼团

领券

团购

会员特价

积分商城

我要签到

购物车


3.3混合场景容量测试模型 

描述测试场景秒杀团购。

场景

运行场景设置

并发用户数

测试点

秒杀

持续时间40分钟

按照每个场景建议的比例分配人数,按照500用户迭代执行脚本,逐步增加并发人数

查看各项性能指标,获得混合模式下的最大并发数和响应时间

团购

  1. 测试结果与分析

会出现的问题:

1、高并发下大量报错:

出现该类问题,常见的原因有短连接导致的端口被完全占用以及线程池最大线程数配置较小及超时时间较短导致。

优化方案:

短连接问题:修改服务节点的tcp_tw_reuse参数为1,释放TIME_WAIT scoket用于新的连接;

线程池问题:修改服务节点中容器的server.xml文件中的配置参数,参数如下:

最大线程数,服务端可以同时响应处理的最大请求数

maxThreads="200"

Tomcat的最大连接线程数,即超过设定的阈值,Tomcat会关闭不再需要的socket线程       

maxSpareThreads="200"               

所有可用线程耗尽时,可放在请求等待队列中的请求数,超过该阈值的请求将不予处理,返回Connection refused错误

acceptCount="200"                 

等待超时的阈值,单位为毫秒,设置为0时表示永不超时

connectionTimeout="20000"

2、并发数不断增加,TPS上不去,CPU使用率较低

出现该类问题,常见的原因有:SQL没有创建索引/SQL语句筛选条件不明确、代码中设有同步锁,高并发时出现锁等待;

优化方案:

SQL问题:没有索引就创建索引,SQL语句筛选条件不明确就优化SQL和业务逻辑;

同步锁问题:是否去掉同步锁,有时候不仅仅是技术问题,还涉及到业务逻辑的各种判断,是否去掉同步锁,建议和开发产品同事沟通确认;

4.1单场景容量测试模型

a.测试结果数据

 

b.测试问题及结果分析

 Cpu占用率100% 差

内存占用率98%  差

事务通过率98% 轻微隐患

吞吐量 26.5 优秀

分析优化:

合并图片或压缩图片

把图片替换成图标

分离冷热数据,对于大内存访问率低的数据适当分离

提高缓存命中率,命名问题

4.2混合场景压测模型

  1. 测试结果数据

 

 

 

  1. 测试问题及结果分析

Cpu占用率100% 差

内存占用率70%  良好

事务通过率98% 轻微隐患

吞吐量 13.5 良好

分析优化:

合并图片或压缩图片

把图片替换成图标

分离冷热数据,对于大内存访问率低的数据适当分离

提高缓存命中率,命名问题

5.测试结论

A3Mall商城性能测试:

Cpu的占用率较高需要去进行增加cpu核数来进行优化

以及 服务器内存数量不足,应扩展服务器内存数量,以便服务器运转收放自如。

修复以上问题,性能数据优化完毕

1    性能测试常用指标概念

1.1    并发用户

概念

并发用户是指同一时刻对系统进行访问的多用户,必须注意是同时且多用户。这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。

并发用户数性能监控的指标

并发用户数是衡量一个系统性能是否达标的一个重要指标。并发用户数越大,则系统承受的压力也就越大。并发用户数是通过业务量大小来进行评估的。

并发用户数公式:TPS*响应时间。并发用户数作为系统能力的参考,但是不能作为指标,因为从公式上可以看出影响并发用户数的有响应时间。

1.2    响应时间

概念

响应时间是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间。

广义的响应时间(包含服务端处理时间、路径传输时间和终端处理时间的总和):用户发起交易请求指令(如在界面上点击交易请求按扭开始),到交易成功(如在界面上看到交易成功的提示信息或直接进入下一步操作)截止所花费的时间。

并发用户数性能监控的指标:

Ø  90%响应时间

把事务每次运行的响应时间从小到大排序,其中90%的请求的响应时间都在这个范围之内

  • 平均响应时间

事务运行时间总和除以运行次数,得出来的事务平均响应时间

  • 最大响应时间

事务运行中,最大一次运行所需的时间作为该事务的最大响应时间

  • 最小响应时间

事务运行中,最小一次运行所需的时间作为该事务的最小响应时间

1.3    TPS

PS每秒钟系统能够处理的交易或事务的数量,它是衡量系统处理能力的重要指标。TPS是重要的性能参数指标。

不同行业不同业务可接受的TPS也是不一样的。一般互联网电子商务为10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-1000TPS。

1.4    吞吐量

吞吐量(Throughput)指在一次性能测试过程中网络上传输的数据量的总和。

对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力。

1.5    思考时间

思考时间是指模拟正式用户在实际操作时的停顿间隔时间。

从业务的角度来讲,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。

在测试脚本中,思考时间体现为脚本中两个请求语句之间的间隔时间。

1.6    CPU

查看性能测试的过程中CPU资源的占用率,反映系统处理能力以及应用是否稳定。

1.7    I/O

磁盘的使用情况,度量磁盘读写性能。

1.8    内存

查看内存使用情况。

1.9  调用链

1 调用链跟踪、记录业务的调用过程,可视化地还原业务请求在分布式系统中的执行轨迹和状态,用于性能及故障快速定界。下图所示是在华为云APM拓扑图发现异常后查询调用链追踪异常的过程:

2   性能标准参考

3   测试报告分析

华为云性能测试服务为用户提供专业性能测试报告,包括事务并发、TPS、吞吐量、响应时延、资源使用、调用链跟踪等多维度统计。测试报告有在线和离线两种,用户可以在无人值守的情况下完成测试后查看离线报告,内容与实时报告一致。

下面将华为云性能测试服务作为本次的测试工具,当测试任务结束后提供的报告进行分析。

1. 统计维度:报告的TPS,时延、并发等统计维度均为事务,如事务中有请求多个报文,只有在多个请求报文均正常返回会认为成功,时延也是多个请求报文的求和值

2.  响应超时:出现该情况下是在设置的响应超时时间内(默认5S),对应的TCP连接中没有响应数据返回,会将本次事务请求统计为响应超时。

存在部分响应超时:

a)     服务器繁忙,如某个服务节点CPU利用率高

b)     网络IO超过VM/EIP带宽

c)     等待后端微服务、数据库的超时时间设置过长

运行一段时间后全部响应超时或者检查点校验不通过:

a)     大压力导致系统中某个微服务奔溃

b)     后端数据库无响应

3.   比对失败:从服务器返回的响应报文不符合预期(针对HTTP/HTTPS默认的预期响应码为200),比如服务器返回404,502等。出现原因一般为高并发情况下被测服务无法正常处理导致的,如果分布式系统中数据库出现瓶颈、后端应用返回错误等

4.       解析失败:响应报文已全部接收完成,但是部分报文丢失导致整个事务响应不完整,这种情况一般需要考虑网络丢包

5.       带宽统计:报告统计的是性能测试服务执行端的业务数据包带宽,上行表示从性能测试服务发出的流量,下线表示接受到的流量。如果是外网压测场景,您需要关注执行机的EIP带宽是否可以满足上行带宽的要求。而下行带宽需要关注单台执行机是否超过1GB

6.       TPS与并发用户及时延的关系:TPS是指云性能测试服务在统计周期内每秒从被测服务器获取到的响应事务实时统计,TPS=并发用户/平均响应时延。

TPS未随着并发数增长而上升:

a)  系统性能到达瓶颈,持续并发加压过程中响应时延增加(可观察响应区间统计)

b)  可通过进一步加压是否会出现非正常响应验证

  1. 如何判断被测应用优劣:根据应用本身定义的服务质量定义,最佳状态是没有任何响应失败、比对失败的情况,如果有,需要在服务质量定义范围之内,通常情况下不超过1%,同时响应时延越低越好(2S内体验较好,5S内可以接受,超过5S则需要考虑优化),TP90,TP99指标可以客观反映出90%,99%用户的体验时延

TP90响应时延较短,TP99时延高:

a)     系统性能接近瓶颈

b)    可通过进一步加压是否会出现非正常响应验证

4   通用优化建议

1)      扩容,链路中的某一应用可能出现cpu使用率较高或者连接池资源不够用(rpc、jdbc、redis连接池等)但本身对于拿到连接的请求处理又很快,这一类需要横向扩展资源。

2)      应用逻辑优化,比如存在慢sql、 逻辑的不合理如调用db或者redis次数过多、没有做读写分离造成写库压力过大。

3)      超时时间的合理设置,对于应用之间的rpc调用或者应用与其他基础组件之间的调用,均需要设置合理的超时时间,否则过长的等待将造成整个链路的故障。

4)      缓存的应用,请求尽可能从前端返回,而不是每一个都要让后端应用处理后再返回,减轻后端应用及数据库压力,提高系统吞吐能力。

5)      限流,对于超出承载能力的QPS或并发,可以进行拦截并直接返回提示页面。

6)      降级,对于非核心链路上的应用,允许故障关闭而不影响核心链路

7)      扩容和优化也是有限度的,在评估容量内,保障核心交易链路正常是重中之重,对于非核心功能模块考虑降级场景


http://chatgpt.dhexx.cn/article/24IrT9sH.shtml

相关文章

性能测试报告编写技巧

在对结果进行分析并得出结论之后,性能测试工程师要把它们以文字报告的形式发送给相关人员。这就是性能测试报告。除了书面文字之外,可能的话,公司还会召集人员开专门的会议进行报告讲解和结果分析。所以,性能测试报告是性能测试工…

性能测试报告(实例)

测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告,相信通过这个报告,我们会整性能测试有个整体的了解,知道我们在以后做性能测试时需要做哪些工作。 注明:1.性能测试报告模板很多&…

性能测试报告,实例讲解

上一篇博文主要通过两个例子让测试新手了解一下测试思想,和在做测试之前应该了解人几点,那么我们在如何完成一次完整的性能测试呢? 测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告&#xf…

Jmeter生成HTML性能测试报告

目录 1、前言 2、生成报告 2.1、方式一 2.2、方式二 3、查看报告 3.1、Dashboard(仪表板) 3.2、Charts(图表) 3.3、Customs Graphs(定制图表) 1、前言 使用 Jmeter 进行性能压测时,跑完…

【测试报告】模板:性能测试报告 2

目录 一、封面 二、文档修改记录 三、目录 四、正文 第一章 概述 第1节 编写目的 第2节 项目概况 第3节 适用范围 第二章 性能测试范围 第1节 测试对象 第2节 测试术语 第3节 测试目标 第4节 测试基本信息 第三章 压测机配置信息 第四章 服务器配置信息 第五章…

接口性能测试报告

1 概述 1.1性能测试概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试确定在各种工作负载下系统的性能,目标是当负载逐渐增加时&…

性能测试报告实例

上一篇博文主要通过两个例子让测试新手了解一下测试思想,和在做测试之前应该了解人几点,那么我们在如何完成一次完整的性能测试呢? 测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告&#xff…

性能测试报告案例

一、性能测试报告目录 二、性能测试结论 1、***系统的性能 1)业务层的性能说明: 2)技术层的性能说明: 2、***系统的稳定性 另外,注释说明:术语

功能测试报告总结

转自http://www.cnblogs.com/xunmi/archive/2011/08/18/2144745.html 测试报告是测试人员在测试过程中用于反映测试状况的文档,其重要性通过网上哀求、跪求、旋转360度冰天雪地各种求测试报告模块的帖子中就可见一斑。其实测试报告的内容基本都是模板的那些&#xf…

功能测试报告的编写

目录 前言 一、〖版本测试报告〗 二、〖总结测试报告〗 前言 测试报告是测试人员在测试过程中用于反映测试状况的文档,其重要性通过网上哀求、跪求、旋转360度冰天雪地各种求测试报告模块的帖子中就可见一斑。其实测试报告的内容基本都是模板的那些,只…

设置数据库中表的关系图

新建一个数据库及表后,紧接着要设计这些表的关系图,那么如何操作呢? 首先在新建好的数据库下,选中“数据库关系图”,如图所示: 这样,我们就可以在表间建立关系,设置外键。建立关系后…

数据库中表的依赖关系

数据库中表的依赖关系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio 作者:李继金 撰写时间:2019年6月8日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 提起数据库我们都会想到对数据库进行…

DB2中查看表结构

在DBVisualizer 中查看DB2中表的结构信息。 desc <tablename>

正交表

一、正交排列法概述 正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时&#xff0c;由于不可能为每个输入组合都创建测试用例&#xff0c;可以采用这种方法。 案例&#xff1a;字符属性设置程序 在一个窗体中有多个输…

如何将数据库中表转化到redis中

如何将数据库中表转化到redis中 方法一&#xff1a;使用string 数据库中user表一条记录&#xff1a; id username pwd 3 lili 123 使用&#xff1a;文件夹的方式 set user1:3:id 3; set user1:3:username lili; set user1:3:pwd 123; 存入后在redis中显示 文件夹 user1 key…

MySQL 数据库中表数据莫名其妙没了的情况

我遇到过数据库中表数据没了的情况。 一开始还以为是遇见了bug。 其实是我自己的锅&#xff0c;忘记commit了。 我们来看一下案发现场。 DELIMITER $$ CREATE PROCEDURE insert_dept(IN START INT(10),IN max_num INT(10)) BEGIN SET autocommit 0; # xxxxxxxxxxxxxx…

数据库中表的加减法

通过集合运算可以得到记录的集合或者公共记录的集合。 一&#xff1a;加法&#xff1a;union 1、表的加法&#xff1a;union,并集&#xff0c;但是会去重&#xff0c;就是去重重复的记录。 select * from A union select * from B. 2、union集合运算要求有相同的列&#xff0c…

数据库中表和表自己本身关联

在查询数据的时候&#xff0c;我们经常通过与多张表的关联来取得我们想要的数据。 有一天我看到这样一个问题。 刚开始想了好久&#xff0c;工作中大多用到的是一张表和其他的表进行关联查询出来自己想要的数据。 想着用函数&#xff0c;有循环来实现&#xff0c;试了很多次都…

MYSQL数据库中表的进阶玩法——表分区

&#x1f50e;这里是MYSQL加油站 &#x1f44d;如果对你有帮助&#xff0c;给博主一个免费的点赞以示鼓励 欢迎各位&#x1f50e;点赞&#x1f44d;评论收藏⭐️ 什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的&#xff0c;默认放在/mysql/data下面&#xff…

mysql中表怎么建立联系_数据库(三) 表与表建立联系-外键

1.理解表与表之间建立关系的必要性 比如我们建立了一张个人信息表,把所有人的信息都存在这张表中 这张表中有老师和他们所属的部门,并且不同的部门工作也是不同的 所有数据存放在一张表中的弊端 1.组织结构不清晰 2.浪费存储空间 3.扩展性差 针对这个问题我们可以将他们分成两张…