Jmeter 性能 —— 模拟百万高并发压测思路!

测试场景:模拟百万级的订单量一个物流信息的查询接口。

条件:接口响应时间<150ms以内。10万并发量每秒。

设计性能测试方案:

1、生产环境

10W/S --并发量(架构师/技术负责人提供)20台机器(4G*4核配置)

2、性能测试环境

①出于成本考虑,绝大多数公司,是做不到和生产环境一样配置的。

有些生产环境有几百台甚至几千台机器,测试环境做不到。

②基准测试 -- 少量的请求,少量服务器 -- 性能测试 -- 通过理论推导 生产环境性能

【4G*4核配置】1台 --> 性能指标 -- 推导 --只需要1台与服务器相同配置的机器能完成5000/s并发量即可(类似数学中的同理可得,以此类推)

注意事项:性能测试项目部署服务器硬件型号 -- 和生产环境一致

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

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并发的压力。

Jmeter用到的插件:

①Stepping Thread Group和loadrunner一样,梯度压测。每次递增可以在Next,add中自己填入参数。

②Jmeter压测实时仪表盘,在后端监听器中。

③性能测试仪表盘的好处是它有集群监测,可以进行Linux的集群监控。

各位朋友如果有关软件测试的任何问题,欢迎文章后留言,谢谢。

### 如何在JMeter脚本中设置和调整QPS #### 使用吞吐量控制器来控制QPS 为了实现特定的QPS,在JMeter试计划中可以利用吞吐量控制器。通过配置此组件,能够精确地管理每秒钟发送到服务器的请求数量[^2]。 对于设定固定的QPS值,比如10QPS的情况,可以在试脚本里加入吞吐量控制器,并对其进行如下参数化: - **目标吞吐量**:设为期望的QPS数值,即在此案例中的10次/秒。 - **执行方式**:选择“按线程”,这有助于更均匀地分配请求给各个虚拟用户。 - **最大并发数**:依据实际需求而定;某些情况下,可能仅需少量并发就能达成所需的QPS水平。 另外,还需注意的是Duration(持续时间)应根据具体应用场景合理规划,如一小时内保持稳定负载,则将其设为3600秒;如果是短周期内的高密度冲击型试,则可能是较短时间内完成更多次数的操作,例如半小时内则设为1800秒。 #### 配置线程组以支持所需QPS 除了借助吞吐量控制器外,适当调节线程组里的基本属性同样重要。合理的线程数量、启动延迟以及循环计数均会影响最终能否顺利达到预期的QPS指标。通常来说,如果单个用户的响应速度快于所希望维持的间隔时间,那么增加更多的模拟用户可以帮助提高整体流量至指定级别。 ```java // 示例代码展示如何创建一个简单的HTTP请求并应用上述原则 ThreadGroup threadGroup = new ThreadGroup(); threadGroup.setNumThreads(10); // 设置初始线程数目 threadGroup.setRampUp(1); // 控制加速度, 即每隔多少秒启动一个新的线程 LoopController loopController = new LoopController(); loopController.setLoops(-1); // 表示无限循环直到手动停止或满足其他终止条件 ``` #### 查看与验证QPS效果 当完成了以上配置之后,可以通过查看聚合报告中的`Throughput`字段来确认是否达到了预设的目标QPS。该值代表了单位时间内成功处理了多少事务,也就是TPS (Transactions Per Second),它与QPS有着密切的关系——特别是在只涉及读取操作而不含写入的情况下两者几乎相等[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值