基于Jmeter与python,建立半自动化压测流程 (一)

本文介绍了如何使用JMeter进行压力测试,并结合Python进行脚本控制,以确定系统在混合接口测试下的最大TPS。通过调整JVM配置、避免硬件瓶颈和优化压测过程,实现了在单台测试机上达到约11000并发线程的目标。测试过程中强调了结果分析的重要性,以及在实施压测时需注意的多个关键点,包括硬件资源、系统状态、日志记录等。
摘要由CSDN通过智能技术生成

简单记录一下实施过程与踩过的坑

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官网文档有详细配置说明࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值