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