真实性能测试案例之性能分析与报告

news2025/1/18 21:06:33

今天主要跟大家分享一个曾经所做的真实性能测试的案例,主要为其中性能测试分析报告过程部分,希望能对你以后怎么做性能分析和报告有所帮助。这个案例的测试目的为:在线考试为“XX平台”中的一个重要模块,根据目前业务的需要,需要测试在线考试能否支持100的并发量。

一、场景描述

采取逐步增加用户数(每10分钟增加用户数20人)对在线考试进行并发操作,达到100人为止;当并发数达到100后则继续运行一段时间(30分钟)。

二、测试环境配置

1、测试服务器配置


经前面多轮配置测试及计数器观察分析(考试只为系统性能测试的一个块,前面还有做其它模块的性能测试。当然如果单独测考试系统,也应根据测试结果数据去进行参数调优。具体哪些是性能因子,最后确认程序、tomcat、JVM及MySQL最佳参数配置如下:2、服务器软件配置

程序参数设置

jdbc.minPoolSize=50
jdbc.maxPoolSize=1500
jdbc.initialPoolSize=50
jdbc.maxIdleTime=60

tomcat server.xml参数配配置

maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"  maxIdleTime="60000" />
maxKeepAliveRequests="1" redirectPort="443"  />

JVM参数配置:

-XX:PermSize=64M
-XX:MaxPermSize=128m
-Xms512m
-Xmx1024m

MYSQL参数配置:

max_connections=1500
thread_cache_size=128
back_log=200

三、测试结果分析

1、当并发数为60后,发生500服务器错误,通过计数器监控检查为数据库连接数达到最大值1499

1)并发数与服务器出现错误的关系视图

2)数据库线程连接数与出现错误的关系视图

通过上面两图表分析:在并发数逐步加大过程中发生瓶颈,瓶颈原因为数据库线程连接数达到饱和值1499。

2、调整MYSQL的max_connections=11500后进行测试

调整参数后仍发现mysql的线程数达到1499后就不能继续上升了。确认原因:windows32位系统,一个进程中可用的内存空间只有2G,而默认情况下一个线程的栈要预留1M的内存空间,所以理论上一个进程中最多可以开2048个线程,但是内存不可能完全拿来作线程的栈,所以实际数目要比这个值要小。所以1499则为该测试环境的线程数峰值。

3、根据前面压力结果,调整并发数为40进行测试

发现当提交试卷数达到1300左右时,数据线程仍然达到1499,最后再次提交试卷发生服务器500错误。都是在发现错误后停止测试(并发40时是一发现500错误现象则停止运行,所以失败数为1),考试流程各事务通过量统计情况如表:


根据上表分析:当短时间内(如30分钟),学生考试提交的试卷次数超过1300左右,当其它学生提交试卷时或进行其它与数据库相关操作时,会出现服务器500错误。

四、测试结论及建议

测试结论

平台在线考试不支持100的并发数。

性能瓶颈为在一段时间内(如30分钟)学生提交考试次数超过1300左右后,数据连接数达到该服务器允许的峰值1499,导致进行考试以及其它操作时出现500服务器错误。

在该配置服务器环境下,MySQL的max_connections=1500为数据线程数最大设置,超过后并不起作用。

建议

A、尽可能的优化后台处理程序,降低考试业务所需的数据库连接数。

B、在做测试数据过程中发现,当安排考试的以院系为单位(院系用户较多,如2000个),点击“启用”按钮无响应,实际后台已经在做分配考试处理。因此建议优化该功能,如点击启用考试应及时改变状态,同时后台做分配处理。

C、后台分配考试处理方式过慢,建议进行优化,缩短处理时间。

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT实用使用指南 让它解你所问

Chatgpt无疑是这几年来影响力最大的AI技术之一,生成式的AI模型正在促进各个行业的效率和自动化发展,Chatgpt对于个人、企业和各个行业都有着一定的影响 在我刚接触的时候,发现对Chatgpt的认知太肤浅了,一个最强的ai聊天机器人摆在…

实时检测Aruco标签坐标及位姿opencv-python4.6和4.7版本

先说opencv-contrib-python4.7.0.72时,aruco下面带曲线,但是程序也能跑,可以跑检测的,对比4.6版本需要改三个函数 4.6装opencv-contrib-python 4.7装opencv-contrib-python 1 cv2.aruco.Dictionary_get() cv2.aruco.getPredef…

Smali的使用技巧:快速定位Android应用程序中的关键代码

简述 Smali是一种Android应用程序的Dalvik虚拟机指令集汇编语言,用于编写和修改应用程序的DEX文件。通过编写和修改Smali代码,可以实现对Android应用程序的定制化和逆向分析。Smali语言类似于汇编语言,直接操作Dalvik虚拟机指令集。 Smali代…

2023最火的软件测试面试宝典,你刷过没?

这是一份最近疯传的软件测试面试宝典,你有刷过吗? 面试宝典一共400页,包括了测试基础102页,Linux基础38页,MySQL63页,web测试21页,app测试38页,selenium相关50页,性能测试…

02.引擎架构分类

简介 1.工具层 2.功能层:绘制、渲染、让世界里面的东西能看见、动起来 3.资源层:负责加载大量的数据和文件 4.核心层:游戏引擎的瑞士军刀,各种功能处理的内核 5.平台层:用于适配游戏不同的发行平台 第三方中间插…

3d渲染时预览和出图不一样怎么办?

在使用3dmax渲染时有时会遇到看到的图和渲染出来的图不一样的情况,这是为什么呢?有以下几方面的原因。 一、伽马 3dmax的伽马有很多,主要有显示伽马、输入伽马和输出伽马,其中预览图亮度由显示伽马决定,而图片亮度由输…

VUE.js中文官方文档

目录 创建一个 Vue 应用# 应用实例# 根组件# 挂载应用# DOM 中的根组件模板# 应用配置# 多个应用实例# 模板语法# 文本插值# 原始 HTML# Attribute 绑定# 简写# 布尔型 Attribute# 动态绑定多个值# 使用 JavaScript 表达式# 仅支持表达式# 调用函数# 受限的全…

隐私计算简介

随着数据规模的不断扩大和网络技术的快速发展,数据安全和隐私保护成为了热门的话题。隐私计算作为一种新兴的数据安全和隐私保护技术,为数据安全和隐私泄露问题提供了新的思路和方法。 2020年10月19日,Gartner发布2021年前沿战略科技趋势&am…

Blender3.2使用python脚本命令的三种方式, 以及后台渲染调用源码示例及说明

本文环境系统OS(Win10) 方式一,在Script(脚本)功能里面的Console(控制台输入python代码)。 如下图: 对应的三句代码是: print("Hi, blender.")import bpybpy.ops.mesh.primitive_cube_add(enter_editmodeFalse, alignWORLD, location(0,0, …

Vue3.0性能提升主要是通过哪几方面体现的(了解)

文章目录 一、编译阶段diff算法优化静态提升事件监听缓存SSR优化二、源码体积响应式系统 一、编译阶段 回顾Vue2,我们知道每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把用到的数据property记录为依赖,当依赖发生改变&#…

【ICML 2023】Hiera详解:一个简单且高效的分层视觉转换器

【ICML 2023】Hiera详解:一个简单且高效的分层视觉转换器 0. 引言1. 模型介绍2. Hiera介绍2.1 为什么提出Hiera?2.2 Hiera 中的 Mask2.3 空间结构的分离和填充到底如何操作2.4 为什么使用Mask Unit Attn 3. 简化版理解4. 总结 0. 引言 虽然现在各种各样…

Docker 安装Tomcat、实现Tomcat集群

文章目录 1、寻找Tomcat镜像2、下载tomcat镜像(下载最近版本)(1) docker pull tomcat 下载(2) 查看镜像是否安装成功 3、启动容器(跟安装Nginx一样)4、 测试tomcat(报错解决)5、 搭建Tomcat集群 1、寻找Tom…

访问修饰符private,default,protected,public访问等级区别

private:private是最严格的访问修饰符,它将成员声明为私有的。私有成员只能在声明它们的类内部访问,其他类无法直接访问私有成员。这样可以确保数据的封装性和安全性。 default(默认):如果没有明确指定访问…

Pytest 分组测试

有时候需要针对不同的测试环境跑不同的测试用例,如:冒烟测试、sit、uat、prd,所以给自动化测试用例做标记分组是很有必要的,pytest.mark 可以轻松实现这个功能。首先需要注册自定义标记。 注册marks 有3中方法注册marks&#xf…

【Apache Pinot】浅析 Pinot 的 Table,Index 和 Tenant 原理

本文属于基础篇幅,不会涉及过深入的原理,主要还是如何用好 Pinot 背景 单独讲 Table 概念可能有些许单薄,本文会扩展场景,讲解表的部分原理,表与表之间的相互影响,租户是怎么作用到表的,增加字…

一位年薪35W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…

基于深度学习的高精度袋鼠检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度袋鼠检测识别系统可用于日常生活中或野外来检测与定位袋鼠目标,利用深度学习算法可实现图片、视频、摄像头等方式的袋鼠目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

活跃主机发现技术指南

活跃主机发现技术指南 1.活跃主机发现技术简介2.基于ARP协议的活跃主机发现技术3.基于ICMP协议的活跃主机发现技术4.基于TCP协议的活跃主机发现技术5.基于UDP协议的活跃主机发现技术6.基于SCTP协议的活跃主机发现技术7.主机发现技术的分析 1.活跃主机发现技术简介 在生活中有这…

继电保护名词解释三

第三章:电网的相间电流、电压保护和方向性相间电流、电压保护 1. 瞬时电流速断保护:对于仅反应于电流增大而瞬时动作的电流保护。 2. 保护装置的起动电流:能够使保护装置起动的最小电流值。 3. 系统最大运行方式:通过保护装置的…

了解服务级别协议(SLA)在 ITSM 中的重要性

什么是服务级别协议 根据ITIL 4,SLA是服务提供商和客户之间的书面协议,用于确定所需的服务和预期的服务水平。这些协议可以是正式的,也可以是非正式的。 在 ITSM 的上下文中,SLA 有助于设置和管理最终用户在提出请求时的期望 或…