1.1 目的
本测试报告为网页聊天室的性能测试报告,目的在于总结性能测试阶段的学习以及分析测试结果,描述网站是否符合需求。
1.2 背景
考虑到用户数量及数据的增多给服务器造成压力不可估计,因此计划对网页聊天室项目负载性能测试,在系统配置不变的情况下,在一定时间内,服务器在高负载情况下的性能行为表现,便于对系统环境进行正确的分析及评估。
1.3 范围
本次测试主要是网页聊天室项目的性能测试。
环境 | 机器型号 | 操作系统 | CUP | 内存 |
---|---|---|---|---|
客户端 | LAPTOP-Q4342TA2 | windows10 | i5-11300H(x64) | 16.0 GB |
3.1 测试目标
在大用户量、数据量的超负荷下,获得服务器运行时的相关数据,从而进行分析,找出系统瓶颈,提高系统的稳定性。
3.2 测试内容
本次测试主要是检验网页聊天室“登录功能”在大负荷情况下响应速度及承受能力。
3.3 测试工具
主要测试工具为:JMeter性能测试工具
辅助软件:截图工具,Word
4.1新建一个线程组
设置相关参数:1.线程数(虚拟用户数) 2.Ramp-Up时间(秒):设置全部用户启动时长 3.循环次数:每个线程发送的个数
我们这里先设置1000 * 3 个
4.2新建一个HTTP请求
我们根据接口文档填入测试的接口信息以及参数
4.3添加合适的断言
在查看接口文档时,我们发现,如果响应成功就会包含"success":true字符串,所以我们添加相应的设置
添加断言结果:
4.4添加监听器
我们这里选择察看结果树、聚合报告和图形结果
4.5运行
察看结果树:
图形结果:
但是在测试过程中突然在运行Jmeter的命令行里找到这句话,因为图形工具也消耗了大量资源,所以我们在使用简单数据写入器 + HTML报告DashBoard的方式再测一遍
4.1 再次修改数据规模
加大测试压力,将线程数修改为1000,循环10次
5.2 添加简单数据写入器
修改输出路径到合适的目录下,同时将文件后缀改为jtl结尾
5.3生成HTML报表
6.1成功率
在仪表盘中,我们可以看到本次测试中,90.06%成功率,成功率还是相对较低的
6.2响应时间变化
在这里我们可以看到本次测试请求时长达到了恐怖的200000+ms,用户是无法忍受的,系统响应无法达到预期。
6.3 TPS
我们可以发现每秒处理的事务数目也是呈现一个下降趋势
6.4 响应时间
我们可以发现整个系统的响应时间可以说是非常慢了
6.5 错误信息
我们可以发现这里出现了很多报错信息, SocketException甚至达到了80%
1.服务器资源限制: 服务器处理能力有限,,无法同时处理大量并发请求。当并发请求数超过服务器的处理能力,会导致访问速度变慢或错误。在我们性能测试过程中,,我们的使用TOP命令查看服务器CUP一直是吃满的,,大量的请求无法进行一个处理,解决方法可以是增加服务器的硬件资源,例如增加 CPU、内存或带宽等。
2.提升代码业务逻辑: 因为我们在登陆时有一个将图片验证码存到服务器硬盘上的操作是单线程的,这个步骤在高并发下是非常耗时的,后续可以引入多线程操作。
3.数据库压力: 接口需要读取数据库中的验证码id,高并发情况下数据库的负载会增加,可能会导致访问速度减慢或出现错误。可以通过优化数据库查询、增加数据库索引、利用缓存技术、分库分表等方式缓解数据库压力。
4.正确使用WebSocket协议: 在性能测试过程中,大量出现了SocketException,后续可以针对性进行排查改正。