概述
新人在用jmeter做压力测试的时候,会被一些性能术语搞懵,直接导致的后果就是对测试的结果数据根本不能理解,更谈不上分析。这篇文章着重给大家实例解释一下jmeter压力压力值如何设计
问题1:什么是压力
问到如何做压力测试,很多人可能只会回答:"加线程组,加并发,看结果"。那么什么是压力,压力从哪里体现?这些恐怕就不得而知了。。。
到底什么是压力呢?实际上我们在压力测试中用RPS来表示
RPS
RPS 就是每秒请求数(Request Per Second),它描述了施压引擎向服务器实际发出的压力大小。从用户角度来说,rps是每秒钟点击的次数从客户端角度来说,rps是每秒向服务端发出的请求数使用工具的最终目的就是为了利用线程数和迭代次数模拟出和用户每秒点击相匹配的压力值,施压服务端,得到性能数据
Rps 由并发数,和服务器响应时间决定。并发数过低时可能达不到预期的 RPS,并发数过高时可能压力过大直接就压垮了服务器。
问题2:jmeter怎么调节压力
从前面的描述中我们知道压力就是每秒发出的请求数。现在再来理解一个jmeter的名词Ramp-up-period(in seconds)
Ramp-up-period
jmeter在线程组中有一个可调节的数值:Ramp-up-period,它表示启动所有线程需要的时间,单位是秒
图1-1设置了100个线程,迭代次数=1,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,也就是每秒钟启动4个线程,同时发送请求
每个线程启动之间的间隔时间是25/100=0.25s,也就是250ms。
换个理解方式,它表示了我们预期给服务器的压力就是每秒钟发送4个请求。也就是说,设置的RPS=4/s
图1-1
图1-2设置了100个线程,迭代次数=10,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,每个线程迭代10次。也就是25秒内启动100个线程,同时每个线程会迭代10次。此时RPS=40/s。
这里有一个很重要的知识点:我们的迭代是顺序进行的,也就是说响应时间决定了每秒能迭代多少次。因此,在线程数固定的情况下,设置的rps仅仅是一个预期值!最终能达到多少rps值,由我们的线程数来决定。或者反过来说,为了达到预期的rps值,需要先设计并发数。
并发数 = 预期RPS * 响应时间
图1-2
Throughput Shaping Timer(rps定时器)
现在我们再来看一下 Throughput Shaping Timer(rps定时器)
下图可以很明显看到它是用来控制RPS的,也就是每秒请求数。
start=1 end=100,持续时间是60。表示我们需要在80s内将RPS(每秒请求数)均匀的从1提升到200。
注意:这里的rps也受限于并发线程数。假设线程数为100,每秒最大迭代次数是1.那么rps定时器的最大压力值就不可能超过100/s