问答 Jmeter 性能测试—请大佬指正一下这个思路

mdd~ · 2024年07月09日 · 最后由 mdd~ 回复于 2024年07月11日 · 4577 次阅读

甲方要求:系统每天访问人次应满足 100 万人,同时在线用户数 1000 人,日订单量支持 10 万订单数,每秒事务处理约为 250 笔。

需求拆解:
1、24 小时内持续访问至少 100 万个请求;思路:以登录接口为例,线程数设置 1000,循环次数设置 1000,调度器持续时间设置 86400s;
2、同时在线 1000 人;思路:以登录接口为例,线程数设置 1000,rampuptime 设置 10s;
3、24 小时提交订单 10 万个;思路同 1,改为提交订单接口;
4、每秒事务处理 250 笔,相当于 TPS 为 250/s;思路:线程数从 250 往上逐渐加,rampuptime 设置 1s,查看 TPS 是否达到要求;

疑问:使用 CLI 模式时,施压机器进行其他操作对压测结果影响大吗?比如我一边在跑脚本,一边在浏览社区文章;
(没做过性能测试,第一次接到这样的任务,希望大佬指正)

共收到 20 条回复 时间 点赞

不知道你是在什么环境下做的测试,如果是在测试环境中进行性能测试时,由于硬件资源和配置的限制,直接模拟生产环境的负载可能不现实,建议你先了解下,然后等比例缩放

mdd~ 关闭了讨论 07月09日 13:36
mdd~ 重新开启了讨论 07月09日 13:36

1.1000000/86400=12~
2.在线不建议使用登录接口,可以考虑使用内部高频接口
3.持续提交?是的话没必要测了。除非提交订单会附带运算类处理
4.持续并发,逐步递增
5.单页签查看影响可忽略

不要被客户描述欺骗了,这是四个需求,需要分别测试
1.客户想知道订单处理 TPS,大于 250 每秒为合格
2.客户想知道每天 10 万的数据量系统如何表现,无异常为合格
3.客户想知道系统能支持多少人同时使用,1000 人为合格
4.客户想知道 100 万人次的数据量系统如合表现,无异常为合格

mdd~ #6 · 2024年07月09日 Author

项目已经部署到客户的服务器上了,现在还没有正式使用,客户要求直接在他们正式服上测

mdd~ #7 · 2024年07月09日 Author

1000000/86400=12~

没理解你的意思,那 24 小时满足 100 万人访问要怎么设计?
日订单数支持 10 万单不就对应提交订单接口吗?

mdd~ 回复

24H+ 持续的前提下,TPS 很低即可达成。所以没有啥压力,10w 也就是 1 的速率

回复

请问如果要转换成 jmeter 线程应该怎么设置

光影风 回复

我已经分解成四个测试需求了,分别测试的话用例和配置都是不一样的。我没有用过 jmeter,我都是用自己开发的工具进行测试,所以我都不关心线程数量,只关心用户数和业务,参见这个 https://testerhome.com/topics/39936,有兴趣可以研究下

线程设置太大,比如 1000,施压机器自己就先崩了,接口大量报超时😂 要怎么解决,没有条件做分布式测试

系统每天访问人次应满足 100 万人这个我觉得不能均摊到一整天吧,那样太理想了,建议设计一下波峰,比如从上午 9 点到晚上 21 点这个期间的访问量占据 80% 的访问量,会更符合实际一些。

1.百万请求,就是百万 pv,线程数不用设置那么大,根据响应时间进行,具体可以看这个【如何带妹进行 1000000PV 的 jmeter 场景压测 - CSDN App】http://t.csdnimg.cn/v0Qbs

回复

赞同,最好是有同类型产品的相关用户画像参考一下

光影风 回复

1、2、4 对应的线程数使用梯度增加的方式,慢慢增加线程数,在压测过程中关注是否达到客户要求的指标数
3 需要使用 1000 线程压测一定的时间,看是否有异常,压测时间就看你们是怎么定的了

mdd~ #17 · 2024年07月10日 Author

对哦,你这么一说我理解了!

mdd~ #18 · 2024年07月10日 Author
corei99 回复

谢谢你的指正!3、4 点学到了!👍

系统每天访问人次应满足 100 万人

意思就是 24 小时内要能满足 100 万人的访问,这 100 万的人是可以重复的;比如 50 万人访问,每人都访问了 2 次,当然这个访问不局限某个接口,就是他来过😀

mdd~ #19 · 2024年07月10日 Author
回复

有道理,可借鉴 #16

mdd~ #1 · 2024年07月10日 Author

还有个疑问:为什么同一个脚本,CLI 模式居然比 GUI 模式的响应时间还慢这么多?

1、每天 100 万人访问,一天按照常识可以粗略估计一天 10 小时,根据系统特性分析这 100 人的集中登录时间,如果无法获取,粗略根据 2/8 法则,80%(800w) 的流量集中在 20%(10*20%*3600) 时间内访问,800w/7200 大约 110 的 tps
2、同时在线 1000 人,这 1000 人登录这个网站会进行哪些操作,模拟相关的查询接口,下单接口等,将相关的接口串行,中间做等待时间,比如某个查询后,浏览 20 秒钟后下单等,启动 1000 个线程循环执行上述流程一段时间,一般观察一段时间的资源,资源使用稳定既可,也可以做一天的持续测试
3、4 可以放一起,根据单个下单接口的响应时间,制定下单并发数以满足 tps 达到 250,比如单个下单接口响应时间为 0.5 秒,那你起 125 个线程并发,即可满足下单接口达到 TPS 250,10w/250 = 400 秒,保证 125 并发执行 400 秒就可以了
最后,实际操作中可以适当扩大指标,做一定的冗余设计,比如对各个指标要求提高 20%

mdd~ #22 · 2024年07月11日 Author
YHC 回复

通俗易懂!喜欢这样的解答!

单个下单接口响应时间为 0.5 秒,那你起 125 个线程并发,即可满足下单接口达到 TPS 250 。这样算不对吧?1 个 0.5s,那 125 个不就耗时 62.5s 了,TPS 怎么能是 250 呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册