首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Jmeter进行性能测试实战

1

实施背景

1.1 任务目标

钉钉方对此次压测任务解释如下:

1.稳定性专项的目的是希望和服务商一起保障服务稳定可用,为用户提供更可靠的服务;主要包括以下内容:

2.系统架构,包括服务器、数据、容器等

3.监控配置,报告系统监控(cpu、内存等)和业务监控(QPS、RT等)

4.首页性能情况

5.压测情况

6.降级方案,用于流程突增时,系统及时处理保证服务运行

已上架 查看监控线上最高QPS为xxx(可查询近2个月最高QPS等) 要求压测至少支持:

峰值QPS的3~5倍

(1)提供单链路或全链路压测数据及最高支持的QPS上限,各业务场景下列各项值:

a.峰值RT

b.峰值错误率(统计非200)

c.峰值总cpu利用率

d.峰值load1

e.峰值内存利用率

(2)ISV服务端授权激活场景,服务端响应时间整体小于3s

这样一来,我们的目标很明显,就是验证QPS是日常峰值3~5倍情况下,服务器的资源占用,RT,QPS是否满足要求。

1.2 调研选型

由于时间仓促,我在选型压测工具时只对比了自己比较熟悉的工具Jmeter和LR,而LR只能使用破解版的(HP和微软这些厂商很鸡贼的,你想用破解版的那就用吧,等把你养肥了啃你一口大的,他们的策略也很套路 就是广撒网,总有那么几家会上钩的,对吧),并且钉钉方明确建议使用Jmeter,那就没啥好说的了,直接上Jmeter吧。

2

环境配置&安装目录解释

2.1 Windows环境下安装Jmeter

Step1:配置Java开发环境,话不多说。

Step2:下载Jmeter:https://jmeter.apache.org/download_jmeter.cgi

解压后设置环境变量JMETER_HOME(设置为Jmeter的安装目录)

2.2 Mac下配置Jmeter

Step1:配置Java开发环境。

Step2:下载Jmeter并解压。

Step3:配置bash_profile(切换到当前用户主目录即:cd,然后查看隐藏文件ls –al即可看到这个文件,若无,自己建),加入以下内容。

export JMETER_HOME=/Users/mc/Applications/apache-jmeter

PATH=$JMETER_HOME/bin:$PATH:.

export PATH

然后执行,source .bash_profile即可,我们输入jmeter.sh验证下结果如下:

2.3 目录解释

bin:可执行文件目录。以下文件是我们经常会用到的。

jmeter.bat 可以设置jemeter使用的内存(ps:建议配置为负载机物理内存的1/4~1/2)

jmeter.sh:Linux和Mac下启动Jmeter GUI

jmeter-server(.bat):jmeter联系负载设置文件。

jmeter.properties:jmeter的80%以上的配置项均在该文件中配置;一旦该配置文件被改动,只有重启jmeter才生效。

docs:jmeter API文档

extras:Jmeter拓展。

lib: jmeter启动时默认的classpath。使用jmeter进行测试时所有需要import的包和类必须存在该目录下。

lib/ext:存放jmeter的组件/插件,第三方组件和插件也要放置在该目录下。

所有图形化GUI中可见,可使用的部分必须放置在lib/ext目录下。

printable_docs:jmeter官方帮忙文档。

3

Jmeter常用的元件

3.1 测试计划

测试计划中可以做以下事情:

1:定义全局变量 2:控制线程组的执行方式 3:引入外部拓展的jar包。

如图:定义全局变量host,后续的请求中可以通过$来使用这个变量值。

最下方蓝色框中是需要依赖的外部jar包,这个包是生成sha-256加密字符串用的,后续在bean shell前置处理器那里我会详细说明。

注意:对于这个选项,如果一个测试计划中有多个线程组,设置此项可生效,不设置时:每个线程组同时运行。

3.2 线程组

3.2.1 线程组的类别

Jmeter中的线程组有3中,分别是:thread group,setup thread group,tearDown thread group。

手动划重点

三种线程组无本质区别,都可以实现多线程的效果。如果在测试计划下只存在一种的话,是没有区别的。区别在于若3中线程组同时存在于一个测试计划下时会存在执行先后的区别:setUp先执行,然后再执行thread group; 最后执行tearDown线程组。

1:线程数=虚拟用户数。

2:Ramp-up Peroid:启动所有线程所需的总时间。

ps:Jmeter中,线程启动的方式采用平均时间计算,线程的最小单位是1;最终效果即:1线程/N秒。N=线程数/Ramp-Up Peroid。

线程组只能指定线程第一次启动时的间隔时间,不能控制之后的循环过程中的线程的间隔。

3:循环次数 每一个线程执行线程组内的组件的次数。

4:Delay Thread creation until needed:

5:调度器:设置线程组计划的启动时间和持续时间。

5.1:调度器是在点击启动后生效。

5.2:启动延迟的优先级别高于启动时间。

5.3:持续时间的优先级高于结束时间。

5.4:线程的停止条件是-->循环次数或持续时间满足设置。

......

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180802B1CHT700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券