一文教你使用Jmeter编写脚本压测

随着商业业务不断扩张,调用adsearch服务频率越来越高,所以这次想做个压测,了解目前多少并发量可以到达adsearch服务的界值。

这次选用的jmeter压测工具,压测思路如图:

一、日志入参

日志选取的adsearch 的 getads部分

思路: rd线上获取该部分入参下载到本地,我们读取该部分生成入参对象。(这个套路用到很多工具上,比较省事不用拼参数)

如图:

通过jaskson库扫描文件转成对象 

ps:jaskson开源库,用于处理JSON和xml生成对象,百度一下很多博客,遇到问题可以直接搜索都有解决方案。

我们拿到日志之后简单处理下,变成如图格式,在我们读取的要文件的时候,注意下哪部分入参,jaskson是把json结构结合构造函数,自动完成set动作生成有值的对象。

二、jmeterGUI并发

1.依赖jar包

如何打包

idea直接使用marven→package就可以把项目打成jar包。打包jar在项目本地路径/target/.jar

jar放置哪里

项目jar包和依赖jar需要放置在jmeter本地路径:./jmeter/apache-jmeter/lib/ext/

  • 坑1:我之前放置在lib同级目录 extras/下面,一直没有办法运行,后面注意看清楚。
  • 坑2:./lib/ 下面jmeter相关的jar不要乱动,否则坑死你,各种莫名错误。

项目相关依赖jar包

因为要调用adsearch肯定要有adsearch的jar,但是还有其他,你有不知道怎么办呢,这坑了好久,后面发现一个办法: 

  • 就是你不知道依赖什么jar先用jmeter的GUI端运行一下,同时打开/bin/jmeter.log查看报错,非常详细,缺少那个,找个那放进去就行了。

三、参数设置
  • 线程数:并发量,可以理解一次有多少用户同时访问。

  • Rame-Up(secondes):jmeter每个多少s增加并发。

       举例:1000线程,rame-up=10s。即每s增加100线程。

  • 循环次数:一个线程循环多少次

jmeter并发,注释链接服务的打印,不然打印结果也会被搭理自动请求,服务会提示有误

报错如图:

解决方案: 

四、结果分析
  • 下游最大调用量20万/min :adsearch→zzsearch/zzqr 

  • 最大响应时间:500ms
  • 最大qps:不断增加并发数,增加一个值后tps出现下降,那么最大tps就是那个值。

  • 最大并发数:不断增加并发数,增加到某个值后,服务端不断出现超时,则最大并发数就是那个值。

五、启动多个jmeter实例,会提示端口占用

如图: 

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

### 如何使用 JMeter 编写压力测试脚本 #### 1. 准备工作 在开始编写 JMeter压力测试脚本之前,需要确保环境已经配置完成。可以通过以下命令安装并设置 JMeter 环境[^4]: ```bash # 更新系统 sudo yum update -y # 安装 wget 以便下载 JMeter sudo yum install wget -y # 下载 JMeter 缩包(使用 JMeter 官方网站的最新链接) wget https://dlcdn.apache.org/jmeter/binaries/apache-jmeter-5.6.3.tgz # 解 JMeter 缩包 tar -xzf apache-jmeter-5.6.3.tgz # 移动 JMeter 到 /opt 目录(建议) sudo mv apache-jmeter-5.6.3 /opt/apache-jmeter ``` #### 2. 创建线程组 打开 JMeter 后,在试计划下创建一个新的 **线程组**。线程组用于定义并发用户的数量以及运行时间等参数。 - 设置 `Number of Threads (users)` 来指定模拟的用户数。 - 配置 `Ramp-Up Period` 表示启动所有线程所需的时间间隔。 - 设定循环次数来控制每个线程执行采样的频率。 这些参数可以根据实际需求调整,以满足不同的负载条件[^1]。 #### 3. 添加取样器 为了向目标服务发送请求,需在线程组中添加合适的取样器。对于 Web 应用程序的压力测试,通常会使用 **HTTP 请求取样器**。 - 右键点击线程组 -> 添加 -> 取样器 -> HTTP 请求。 - 输入服务器名称或 IP 地址、端口号、路径以及其他必要的请求头信息。 如果要试其他协议的服务(如 Dubbo),可以按照特定的需求选择相应的取样器[^5]。 #### 4. 配置监听器 通过监听器收集和展示试结果数据非常重要。常见的监听器包括查看结果树、聚合报告等。 - 查看结果树:显示每次请求的具体响应内容。 - 聚合报告:提供统计摘要,比如平均响应时间、吞吐量等指标。 右键点击线程组 -> 添加 -> 监听器 -> (选择适合的选项) #### 5. 运行试 保存配置文件后即可运行试。观察监听器中的反馈情况,分析系统的性能表现是否达到预期标准。 --- ### 示例代码片段 以下是基于上述描述的一个简单的 JMeter 试结构实例: ```xml <jmeterTestPlan version="1.0"> <hashTree> <!-- Test Plan --> <TestPlan guiclass="TestPlanGui" testclass="TestPlan"/> <!-- Thread Group --> <ThreadGroup name="Example Thread Group" enabled="true"> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" isShared="false"/> <!-- HTTP Request Sampler --> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy"> <stringProp name="HTTPSampler.domain">example.com</stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.path">/api/test</stringProp> </HTTPSamplerProxy> <!-- Listener: View Results Tree --> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector"/> <!-- Listener: Aggregate Report --> <ResultCollector guiclass="AggregateReportGuui" testclass="ResultCollector"/> </ThreadGroup> </hashTree> </jmeterTestPlan> ``` 此 XML 片段展示了如何构建基本的试框架,其中包含了线程组、HTTP 请求取样器及两个常用的监听器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值