Jmeter性能测试工具Timer定时器详解
jmeter提供了很多元件,幫助我們更好的完成各種場(chǎng)景的性能測(cè)試,其中,定時(shí)器(timer)是很重要的一個(gè)元件,jemter提供了9種定時(shí)器,下面一一介紹:
?
一、定時(shí)器的作用域
1、定時(shí)器是在每個(gè)sampler(采樣器)之前執(zhí)行的,而不是之后(無論定時(shí)器位置在sampler之前還是下面);
2、當(dāng)執(zhí)行一個(gè)sampler之前時(shí),所有當(dāng)前作用域內(nèi)的定時(shí)器都會(huì)被執(zhí)行;
3、如果希望定時(shí)器僅應(yīng)用于其中一個(gè)sampler,則把定時(shí)器作為子節(jié)點(diǎn)加入;
二、定時(shí)器詳解
1、固定定時(shí)器Constant Timer
如果你需要讓每個(gè)線程在請(qǐng)求之前按相同的指定時(shí)間停頓,那么可以使用這個(gè)定時(shí)器;需要注意的是,固定定時(shí)器的延時(shí)不會(huì)計(jì)入單個(gè)sampler的響應(yīng)時(shí)間,但會(huì)計(jì)入事務(wù)控制器的時(shí)間
<1>單線程,與sampler同級(jí),每個(gè)sampler之間固定停頓3s,無順序影響(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
<2>單線程,處于sampler2下級(jí),僅作用域sampler2,sampler2運(yùn)行前停頓3s(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
<3>多線程,與sampler同級(jí),每個(gè)sampler之間固定停頓不固定(目前測(cè)的)
?
2、統(tǒng)一隨機(jī)定時(shí)器Uniform Random Timer
和高斯隨機(jī)定時(shí)器的作用差異不大,區(qū)別在于延時(shí)時(shí)間在指定范圍內(nèi)且每個(gè)時(shí)間的取值概率相同,每個(gè)時(shí)間間隔都有相同的概率發(fā)生,總的延遲時(shí)間就是隨機(jī)值和偏移值之和。
該定時(shí)器可以在請(qǐng)求之間設(shè)置一個(gè)隨機(jī)延時(shí),每個(gè)隨機(jī)延時(shí)有相同的發(fā)生概率。總的延時(shí)等于隨機(jī)延時(shí) + 偏移延時(shí)值。
Random?Delay?Maximum(in?milliseconds):隨機(jī)延遲時(shí)間的最大毫秒數(shù)
Constant?Delay?Offset(in?milliseconds):暫停的毫秒數(shù)減去隨機(jī)延遲的毫秒數(shù)
<1>單線程,與sampler同級(jí),每個(gè)sampler之間隨機(jī)停頓0-3s+2s,無順序影響(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
<2>單線程,處于sampler2下級(jí),僅作用域sampler2,sampler2運(yùn)行前停頓0-3s+2s(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
3、高斯隨機(jī)定時(shí)器Gaussian Random Timer
Tread Delay Properties:單位都是毫秒,固定延遲300ms,偏差100ms,意思是時(shí)間延遲300-400ms之間
Deviation (in milliseconds):偏差值,是一個(gè)浮動(dòng)范圍;
Constant Delay offset (in milliseconds):固定延遲時(shí)間
<1>單線程,與sampler同級(jí),若只設(shè)置了固定延遲偏移2000,每個(gè)sampler之間固定停頓,2s,無順序影響(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
<2>單線程,處于sampler2下級(jí),僅作用域sampler2,若只設(shè)置了固定延遲偏移2000,sampler2運(yùn)行前停頓2s(若線程組設(shè)置循環(huán)2次,生效規(guī)則一樣)
?
4、集合點(diǎn)/同步定時(shí)器Synchronizing Timer
這個(gè)定時(shí)器和loadrunner當(dāng)中的集合點(diǎn)(rendezvous point)作用相似,其作用是:阻塞線程,直到指定的線程數(shù)量到達(dá)后,再一起釋放,可以瞬間產(chǎn)生很大的壓力,實(shí)行并發(fā)效果(人多力量大- -哈哈!)
(1)Number?of?Simulated?Users?to?Group?by:模擬用戶的數(shù)量,即指定同時(shí)釋放的線程數(shù)數(shù)量
等待達(dá)到多少用戶時(shí),一起并發(fā)請(qǐng)求
(2)Timeout?in?milliseconds:超時(shí)時(shí)間,即超時(shí)多少毫秒后同時(shí)釋放指定的線程數(shù)
如果為0表示一直等待,直至達(dá)到(1)中用戶數(shù)才一起請(qǐng)求;如果非0,例如30,表示只等待30ms不管是否達(dá)到(1)中用戶數(shù)
都進(jìn)入到下一步的并發(fā)
?
<1>作用于所有線程和所有sampler,sampler之間的并發(fā)獨(dú)立的,與sampler同級(jí),Number?of?Simulated?Users?to?Group?by:設(shè)置為2,Timeout?in?milliseconds:0,等到集合到2個(gè)線程時(shí),同時(shí)并發(fā)請(qǐng)求
?
<2>作用于所有線程和sampler2,sampler之間的并發(fā)獨(dú)立的,處于sampler2下級(jí),只作用于sampler2,Number?of?Simulated?Users?to?Group?by:設(shè)置為2,Timeout?in?milliseconds:0,等到sampler2集合到2個(gè)線程時(shí),同時(shí)并發(fā)請(qǐng)求
?
<3>作用于所有線程和所有sampler,sampler之間的并發(fā)獨(dú)立的,線程數(shù)設(shè)置為2,Number?of?Simulated?Users?to?Group?by:設(shè)置為3,Timeout?in?milliseconds:0,會(huì)一直等待中
<4>作用于所有線程和所有sampler,sampler之間的并發(fā)獨(dú)立的,線程數(shù)設(shè)置為2,Number?of?Simulated?Users?to?Group?by:設(shè)置為3,Timeout?in?milliseconds:1000,超過1000ms等待時(shí),會(huì)自動(dòng)運(yùn)行當(dāng)前等到的線程
? ? ? ? ? ?a 若與sampler同級(jí),超時(shí)時(shí)間會(huì)作用于左右sampler
?
? ? ? ? ? ?a 若處于sampler2下級(jí),超時(shí)時(shí)間會(huì)作用于sampler2運(yùn)行前
?
?
5、固定吞吐量定時(shí)器Constant Throughput Timer
?
測(cè)試需求:測(cè)試20個(gè)用戶訪問網(wǎng)站在負(fù)載達(dá)到30QPS時(shí)的平均響應(yīng)時(shí)間
Target throughput(in samples per minute):目標(biāo)吞吐量。注意這里是每分鐘發(fā)送的請(qǐng)求數(shù),因此,對(duì)應(yīng)測(cè)試需求中所要求的20 QPS ,這里的值應(yīng)該是1200 。
Calculate Throughput based on :有5個(gè)選項(xiàng),分別是:
This thread only :控制每個(gè)線程的吞吐量,選擇這種模式時(shí),總的吞吐量為設(shè)置的 target Throughput 乘以矣線程的數(shù)量。
All active threads : 設(shè)置的target Throughput 將分配在每個(gè)活躍線程上,每個(gè)活躍線程在上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。活躍線程指同一時(shí)刻同時(shí)運(yùn)行的線程。
All active threads in current thread group :設(shè)置的target Throughput將分配在當(dāng)前線程組的每一個(gè)活躍線程上,當(dāng)測(cè)試計(jì)劃中只有一個(gè)線程組時(shí),該選項(xiàng)和All active threads選項(xiàng)的效果完全相同。
All active threads (shared ):與All active threads 的選項(xiàng)基本相同,唯一的區(qū)別是,每個(gè)活躍線程都會(huì)在所有活躍線程上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,唯一的區(qū)別是,
每個(gè)活躍線程都會(huì)在所有活躍線程的上一次運(yùn)行結(jié)束后等待合理的時(shí)間后再次運(yùn)行。
設(shè)置定時(shí)器的Target throughput為1200/分鐘(20 QPS),設(shè)置Calculate Throughput based on 的值為All active threads 。
?
當(dāng)然,Constant Throughput Timer只有在線程組中的線程產(chǎn)生足夠多的request 的情況下才有意義,因此,即使設(shè)置了Constant Throughput Timer的值,也可能由于線程組中的線程數(shù)量不夠,或是定時(shí)器設(shè)置不合理等原因?qū)е驴傮w的QPS不能達(dá)到預(yù)期目標(biāo)。
總結(jié)
以上是生活随笔為你收集整理的Jmeter性能测试工具Timer定时器详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pytest装饰器@pytest.mar
- 下一篇: linux系统安装ntp,CentOS下