在进行系统压测时,QPS(Queries Per Second)即每秒查询数,无法达到预期值是一个常见的问题,本文就来介绍下QPS一直上不去时应该如何排查。
一. 检查硬件资源
- CPU使用率
使用top或nmon命令来查看CPU使用率。如果CPU使用率达到极限,可能是因为系统资源不足导致QPS无法上升,可以考虑升级或增加服务器资源。
- 内存使用率
检查系统的内存使用情况。如果内存使用率过高,可能会导致系统缓慢或不稳定,从而影响QPS,确保有足够的内存可供系统使用。
二. 网络状况分析
- 宽带带宽
确认网络的带宽是否足够支持预定的QPS,网络带宽不足,QPS可能会受到限制。
- 网络延迟
使用ping命令测试与服务器之间的延迟,若延迟较高,可能是网络连接不稳定导致的。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036
三. 数据库性能排查
- 数据库连接数
检查数据库的最大连接数设置。如果连接数达到上限,可能导致QPS无法上升,要增加数据库的最大连接数限制。
例如:MySQL,可以使用以下 SQL 查询来查看当前的数据库连接数:
SHOW STATUS LIKE 'Threads_connected';
- 数据库查询优化
检查数据库查询语句的性能。如果查询语句效率低下,可能会导致QPS下降。可以使用数据库性能分析工具来分析和优化查询语句。
四. 代码优化
- 代码性能分析
使用性能分析工具分析系统代码的性能瓶颈。可能存在一些低效的算法或代码段,导致系统无法处理高QPS。根据分析结果针对性地优化这些问题代码段。
- 并发控制
检查代码中的并发控制机制。若并发控制不合理,可能会导致系统在高并发情况下性能下降。考虑使用分布式锁或缓存等机制来改善并发控制。
五. 系统监控
- 实时监控
使用监控工具实时监控系统的各项指标,如CPU使用率、内存使用率、网络流量等,如top命令,但是top命令运行时也会占用系统资源,尽量少用。
通过监控可以发现系统的性能瓶颈,进而针对性地进行优化
- 压测工具设置
检查使用的压测工具的配置参数是否合理,需要调整线程数、请求频率等参数,以更好地模拟实际应用场景。
在排查问题时,建议逐步排除可能的原因,从硬件资源、网络状况、数据库性能、代码优化和系统监控等多个方面进行分析,以全面了解系统的瓶颈所在,并针对性地进行优化。
测试场景:模拟双11,百万级的订单量一个物流信息的查询接口。
条件:接口响应时间<150ms以内。10万并发量每秒。
设计性能测试方案
1、生产环境
①10W/S--并发量(架构师/技术负责人提供)
②20台机器(4G*4核配置)
2、性能测试环境
①出于成本考虑,绝大多数公司,是做不到和生产环境一样配置的。有些生产环境有几百台甚至几千台机器,测试环境做不到。
②基准测试 -- 少量的请求,少量的服务器 -- 性能测试 -- 通过理论推导 生产环境性能。
(4G*4核配置)1台 --> 性能指标 -- 推导 --只需要1台与服务器相同配置的机器能完成5000/s并发量即可(类似数学中的同理可得,以此类推)
注意事项:
性能测试项目部署服务器硬件型号 -- 和生产环境一致
3、性能测试用例设计
①生产环境面临并发量100000,服务器20台,平均到每台服务器5000/s,当并发需求=5000/s的时候,并发量要大于等于5000/s才扛得住。
性能指标:
吞吐量(接受发送):>=5000/S(QueryPS -- 查询数据场景(一秒内处理查询请求数量)-- TransactionPS -- 多个操作/设计数据修改的请求)
单位时间(s)-- 处理请求的数量
并发量:5000/s (相对并发:某一个时间段)(绝对并发:同一个时间)
响应时间:接口请求从开始到结束完整时间 -- 150ms
性能测试用例 -- 执行步骤 + 执行结果验证
负载测试 -- 系统承载的极限并发
不断加大并发 -- 直到系统不满足性能需要【性能瓶颈】【拐点】
压力测试(稳定性测试)-- 极限并发情况下,系统能否稳定 指定时间(一般压力测试时间大于12小时)
两个测试的先后顺序:先做压力测试再做负载测试,主要是因为要做压力测试你首先要知道极限并发是多少,负载测试就能知道极限并发。
线程目的:去执行接口调用
模拟总共500线程 --> 慢慢增加 -- 最终达到
只压500线程而不是5000线程的原因是,接口平均访问返回时间为100ms,1秒就有1个线程就可以造成10并发的压力。
所以只需要500个用户,1秒就能达到5000并发的压力。
4、Jmeter用到的插件有
①Stepping Thread Group和loadrunner一样,梯度压测,每次递增可以在Next,add中自己填入参数。
②Jmeter压测实时仪表盘在后端监听器中。Grafana(目前还没研究这个仪表盘,等接口框架都写完再来继续填坑)
③性能测试仪表盘的好处是它有集群监测,可以进行linux的集群监控。
下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
资料获取方式 :