Jmeter-普通性能场景设计
直接使用一个固定量的并发用户数,进行性能测试,得到性能指标值
在jmeter中,模拟多用户并发,修改线程组的线程数、
-
线程组:
-
用于性能场景设计的
-
-
线程数:
-
模拟性能测试的并发人数
-
jmeter中,线程数,理论上是没有限制的。但是,要模拟的人越多,要消耗(发起方)的资源也就越多,我们设备资源是有限的,不可能在实际使用中无限的产生并发用户数。
jmeter堆栈配置
http协议,在jmeter默认的堆栈配置情况下,可以产生约1000~1500左右,超过1500可能产生不了。单台机器,一般不要去设置超过1500个线程数。
如果超过1500的话,需要用分布式
修改jmeter的堆栈配置
-
windows电脑:
-
jmeter.bat
文件 HEAP这个参数 -
默认配置
-
rem HEAP - (Optional) JVM memory settings used when starting JMeter rem Defaults to '-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m'
-
-
-
linux
-
jmeter
文件配置
-
-
同等机器配置下,linux能产生更高的并发用户数
性能测试时,使用无图型
真正做性能测试时,使用jmeter的无图形界面模式来进行,不使用图形界面。
线程组属性配置
线程数
线程数设置多少合理?
首先,要做负载测试,找到可以接受的最大并发用户数
然后,再用这个并发用户数来进行性能测试,得到需要的性能指标值。
-
怎么确认是最大可接收的并发用户数?
-
看有没有连续报错
-
响应时间有没有超过1.5秒
-
/*
经验:
假设: 50并发用户数,假设**每个人每秒执行1次请求**,
也就是说每1秒有50个请求,50 * 60分钟*60s(3600s) = 18w 请求 也就是说1个小时产生了18w个请求,一天按8小时算,144w个请求。
一般的企业,系统日均访问量在百万级别,并发用户数并不高,可能在几十到小几百
*/
ramp-Up
启动所有的线程数的时间
启动时间,设置的线程数,在这个时间结束时,全部产生
-
单位(秒)
案例
/*
如100线程数,把ramp-Up设置3S
表示: 在3秒钟结束的的时间上,会把100个线程数,都给虚拟出来。至于这3秒钟之内,每秒会虚拟出多少,并不能确定
已经虚拟出来的线程数,它就会去线程组执行下面取样器请求
*/
ramp-Up怎么设置比较合理
/*
经验:
1、200-300左右线程数,这个时间2-3s就可以
2、500左右线程数3-5s就可以
3、500以上线程数,5s也就差不多。
一定不要百几千线程数,时间设置1s
*/
循环次数
# 准确来说这里应该是迭代次数
# 所谓迭代:就是当线程组所有的取样器都执行完算一个迭代,才会进入下一此循环
小于1是无效的,它必须大于等于1
循环次数的永远 要与 调度器配合使用,如果不一起用,调度器就不生效。
只勾选永远
不要只勾选永远
这个选项通常都是配合调度器一起使用的
勾选永远以后,设置的循环次数,自动无效
/*
仅仅只是勾选永远:那么它会一直运行,知道你强制停止,它才会停止
如果点击停止,强制停止了,这个时候取样器执行会有出错,这个错误,也会算到的服务器的错误率中,这是不合理的。
这个错误是认为导致的
*/
调度器
循环次数的永远 要与 调度器配合使用,如果不一起用,调度器就不生效。
-
持续运行时间(单位:,秒)
-
设置的所有线程数,总共的运行时间
-
# 如果200线程数,设置了ramp-Up设置了3s # 如第一秒虚拟出50个用户,这50个用户就会立即去执行线程组下面的取样器请求
-
-
-
启动延迟(单位:秒)
运行时间结束后,但jmeter没有停止运行
如果并发用户数比较大 + 持续运行时间比较长, 导致内存消耗比较大,可能导致jmeter没有足够的资源来执行停止命令,从而出现,持续运行时间已经到了,但是却没有停下来的情况。
-
网络延迟、磁盘读写......也可能会导致此情况的发生
-
这种现象,用jmeter进行性能测试,很场景
-
解决:
-
此时测试结果已经没有用
-
自己强行停止,从新再开始一次。等待一段时间之后,再开始
-