简单记录一下实施过程与踩过的坑
1.背景介绍
本公司与某客户的项目,为docker单机部署。部署服务器为AWS。主要分为三个服务:算法模型服务,Redis服务和爬虫服务。客户主要想知道当前硬件环境下混合接口测试时系统可承受的最大TPS,开发团队想知道系统可以承受的最大并发。故产生此次测试需求。
因为墙的原因,施压服务器从以往的阿里云转为两台AWS,硬件指标与被压测环境服务器一致,4核CPU,64GB物理内存,均为千兆网卡。
根据长期压测经验,压测工具选为开源工具Jmeter。数据分析与脚本控制选择python写脚本。硬件监控采用AWS自带监控,nmon配合使用。
此处需注意,Jmeter为Java开发,虚拟用户模型实现基于线程,耗用系统资源比较高,需根据压测机物理配置对应修改Jmeter的配置文件(通俗说Jmeter本身也需要进行JVM调优。)Jmeter官方文档内我没有找到推荐配置,故按照JVM一般调优原则进行配置。
Jmeter有一个很容易被误解的概念,此处也做一下说明。
Jmeter中的并发和用户数没有必然联系。用户数实际为Jmeter此时开启了多少线程。理论上如果你不设置TPS控制器,这些线程会尽最大努力去发送请求。而1s内你设置的这些用户数发出了多少请求,可以理解为“此时的1s内并发数”。我们都知道现实中不太可能出现理想的真正并发,我们要始终明确:我们的目的是找瓶颈,不是纠结到底有多少真正的并发。
我们这次实施时,通过不断增加用户数和JVM调优,在当前单台测试机上获得的Jmeter最大线程约为11000。测试中发现此配置已经足以满足此次测试需求,故只用单机跑压测就可以。需要的话可以上分布式测试,Jmeter官网文档有详细配置说明

本文介绍了如何使用JMeter进行压力测试,并结合Python进行脚本控制,以确定系统在混合接口测试下的最大TPS。通过调整JVM配置、避免硬件瓶颈和优化压测过程,实现了在单台测试机上达到约11000并发线程的目标。测试过程中强调了结果分析的重要性,以及在实施压测时需注意的多个关键点,包括硬件资源、系统状态、日志记录等。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=105072473&d=1&t=3&u=592fd011c7044bd38adf6715e83b3e36)
510

被折叠的 条评论
为什么被折叠?



