jmeter tps指标在哪里看_jmeter性能测试讲的很详细

b43202365a6aa88e7f216e0cbf4e224b.png

提问1

如何在大并发测试下,让登录或者后续接口只执行一次?

回答

这个问题网上的答案其实很多,但是大多不靠谱。

比如推荐使用仅一次控制器,但是仅一次控制器对线程组无效;比如推荐跨线程组调用,但是这样比较繁琐,新人也搞不定;

其实只要各位对元件熟悉,这个问题很简单下图100线程:

6f24e5f33ff2dadc3f1888d0daae6b3e.png

添加一个吞吐量定时器,选择总数计算

14dc56d69a8a1b921144ae2102f98e32.png

下面这就ok了,是不是很简单?

14a9b75b0a74056c124dc335e1776e09.png

提问2

大并发的登录之后,后续接口在做并发的时候有一些session重复了,并发量越大,重复几率越高。如何保证后续并发的session不重复?

回答

原因其实是因为jmeter的多线程存在竞争机制,那么并发量很大的时候,就会有一部分线程下的请求抢到了同样的session。

我们可以把这些登录口令在并发登录的时候先在本地保存一份哦,用来代替用户名密码做登录参数!比如下图所示的session

74754e3bf8edb7dd699cbcbf8e103895.png

写个小脚本把这些session保存下来

9de00956078d41b085cfec6dab41f7b7.png
0e2329a31383aeec8ede0c5791030655.png

后续并发的时候直接引用这些cookie就行了

4e3c32c055653637fb7e9aeda267606c.png
82a6f45a480d6e30326ec932e625bd66.png

但是这种也有缺点,脚本会略微的影响吞吐量

提问3

如何识别tps拐点

回答

先分析下面这张图。下面这张图上展示了阶梯负载量,响应时间,tps三种数据

a1cb0d20f74bc84c35ccd319b6c0109d.png

从图上能看出来三个趋势

1:tps升到一个相对高点之后,长期维持稳定,不再升高

2:运行一段时间之后,响应时间开始逐渐升高,但是趋势不明显

3:随着负载越来越高,tps长期保持稳定

分析:

在负载逐渐升高的情况下,tps却长期不变。这并不是说明性能很稳定,而是说明我们单位时间内的单线程tps是在逐渐降低的(单位时间tps/总线程)。

再分析响应时间,我们的响应时间其实也是在逐渐升高,从侧面反映出线程的tps是在下降的。

但是具体在多少负载量的时候我们的瓶颈点已经到来?这张图上不好计算,我们换一个监听器

f965d4ba9163d808ae0b5f252a30d8d6.png

这张图的趋势就比较明显了。随着负载升高,线程的tps逐渐达到一个高点,然后开始下降。那么这个最高点就是我们的性能瓶颈点提问4

jmeter做压测的时候,性能监听图形毛刺过多,看的想吐怎么办

回答

先秀一张图阶梯增压的图形,看看什么是毛刺

4f84c77d751809fd3959013a966d85ee.png

这个场景是阶梯增压,每5s加10个,加到200,然后持续运行

可以看出来tps曲线坑坑洼洼,高低不平,惨不忍睹,怎么给它打磨一下?

修改setting

0af924790aa8fe2c0a5b89468b1e14ed.png
d221f130b8703f70a06a271823f9fff7.png

再回头看一下图形是不是没那么多毛刺了?

7898aff8a6b353a7671a3d1c8cfa8dea.png

但是tps曲线依然波动很剧烈,这是我们的压力设置的不合理导致的

下面把ramp up值改成10s,让我们的线程压力没那么大

4bfe50500f5f1fe143353d383f69158b.png
766483d439809c90955418040d653303.png

响应时间的剧增总是伴随着tps的大跌

d0de113aaa9a02729cd80aea3b7aee0a.png
8b5ac62e714a825d31c378864e3c74f2.png

提问5

非GUI模式下做负载测试,修改参数好麻烦的说

回答

把关键参数都设置成变量,在非GUI下引用就行了,就像下面介样子

bf724f87cdc81e9b20874ea755429b29.png
6725d37ee877990cf06373b76ec3772f.png

写一个shell脚本,参数全部引用一下

c94f071b878b79735e604044bdebb4fb.png
aa081a576a59d7316bce883a237d5648.png

bat执行的时候就像下面这个样子,hin轻松有没有~

198b78f6a0aa8d7dc830d296fa42201c.png

提问6

jmeter4444端口无法监听远程服务器怎么解决

回答

4444端口在阿里云和腾讯云服务上,是默认不开放的。想要监听到,有两种办法,一种是防火墙开放4444端口,一种是更换端口。命令如下

./startAgent.sh --udp-port 0 --tcp-port 1234

9956a38efb4eb722100a20ec7439b847.png

提问7

远程机执行jmeter脚本,怎么快速更换csv参数路径?

只需要在参数路径中加入一组函数,就可以实现参数路径自动定位,如下

${__P(user.dir,)}${__P(file.separator,)}test.txt

3746ca2079882f19a9199b1c643ffd13.png

这一组函数的作用是,不论在linux还是在本机,都可以自动切换路径格式,不需要手动修改Delay Thread creation until needed 是什么意思?

jmeter的线程组里面有一个Delay Thread creation until needed选项,如下图。

99cd8b8ea4c8f4a7f6eda6526284b926.png

很多人不理解这个选项是什么意思,或者根据官方解释,认为它是延迟创建线程。但是延迟创建,在哪里体现出来你?完全搞不清。

我们可以通过jdk的监听器看一探究竟。不勾选延迟创建

线程组设置1500线程,ramp up设置10s,不勾选延迟创建,循环次数设置为永远。如下图

123c7395602c55a4c8e278d688592ee0.png

运行脚本之后,我们在活动线程监听器里面可以看到线程确实是10s内创建完成,如下图

aedf33543318b85d92ad824d873d3c1b.png

但是我们在jdk工具里面再看一下线程创建的过程,会发现线程几乎在1s内就全部启动完成了,如下图

c0f6cb09c7f6d2cc1378f1b9fc1f956a.png

勾选延迟创建

线程组设置1500线程,ramp up设置10s,勾选延迟创建,循环次数设置为永远。再次运行脚本,如下图

36bdbe1c2a3a0293119ac1757465c743.png

结论

通过对比可以发现,只有rump-up和delay-thread组合使用,才可以让线程真正的实现延迟。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值