常數(shù)吞吐量分布式使用示例
更新時(shí)間:
常數(shù)吞吐量定時(shí)器(Constant Throughput Timer)通常用于控制吞吐量,您可以根據(jù)壓測(cè)腳本的業(yè)務(wù)目的,來選擇不同的計(jì)算模式。若疊加上分布式施壓源,您需要考慮腳本中的配置值及配置模式,以便匹配不同的壓測(cè)目標(biāo)模型。本文將從應(yīng)用場(chǎng)景的角度介紹2種常見的使用模式,以及分布式適配不同計(jì)算模式的效果。
背景信息
通過以下示例您可以了解到不同的分布式適配方式。假設(shè)使用到2臺(tái)施壓IP,并發(fā)為100,腳本上僅1個(gè)線程組,其吞吐量目標(biāo)為每分鐘100,計(jì)算模式為當(dāng)前線程(this thread only)。
- 全局生效即為腳本中設(shè)置值為集群整體閾值,施壓機(jī)會(huì)根據(jù)使用到的IP數(shù)來拆分到單機(jī)吞吐量目標(biāo)值上(即單施壓機(jī)閾值為腳本中值/IP數(shù)),此時(shí)場(chǎng)景的總目標(biāo)吞吐量為2×(100并發(fā)/2 )×(100/2)=5000(每分鐘)。
- 單機(jī)生效即為腳本中設(shè)置值為單臺(tái)施壓機(jī)的目標(biāo)值,不會(huì)替換腳本內(nèi)容,需要注意并發(fā)量級(jí)與配置值是否匹配。該模式下,場(chǎng)景的總目標(biāo)吞吐量為2×(100并發(fā)/2 )×100=10000(每分鐘)。
常見應(yīng)用場(chǎng)景
通常配置吞吐量控制時(shí),您可以選擇Sampler維度或線程組維度(多線程組即全場(chǎng)景維度)即可,不推薦使用其他過于復(fù)雜的場(chǎng)景。以下示例中使用了2臺(tái)施壓機(jī)IP,線程組總并發(fā)100,目標(biāo)吞吐量每分鐘100。
Sampler吞吐量控制的實(shí)現(xiàn)
登錄PTS控制臺(tái),在左側(cè)導(dǎo)航欄選擇 ,然后單擊JMeter壓測(cè)。
- 選擇場(chǎng)景配置頁簽,在常數(shù)吞吐量定時(shí)器中選擇單機(jī)生效。說明 只有上傳的腳本中設(shè)置了定時(shí)器,場(chǎng)景配置中才會(huì)出現(xiàn)分布式適配設(shè)置的配置框。
- JMeter腳本中將該組件(Constant Throughput Timer)置于Sampler下面。
- 設(shè)置Target Throughput為
100
,單位為分鐘。計(jì)算模式選擇this thread only
,如下圖所示。
線程組吞吐量控制的實(shí)現(xiàn)
登錄PTS控制臺(tái),在左側(cè)導(dǎo)航欄選擇 ,然后單擊JMeter壓測(cè)。
- 選擇場(chǎng)景配置頁簽,在常數(shù)吞吐量定時(shí)器中選擇全局生效。說明 只有上傳的腳本中設(shè)置了定時(shí)器,場(chǎng)景配置中才會(huì)出現(xiàn)分布式適配設(shè)置的配置框。
- JMeter腳本中將該組件(Constant Throughput Timer)置于Sampler下面。
- 設(shè)置Target Throughput為
100
,單位為分鐘。計(jì)算模式選擇All active threads in current thread group
,如下圖所示。
5種計(jì)算模式
示例:假設(shè)使用單臺(tái)施壓源,2個(gè)線程組,即分別含有2個(gè)Sampler,分別是100并發(fā)和200并發(fā),Target Throughput均是每分鐘100。
說明 以下示例僅供參考,具體請(qǐng)以官方文檔為準(zhǔn),請(qǐng)參見官方文檔。
基于的計(jì)算方式 | 說明 | 其他信息 |
this thread only | 每個(gè)線程單獨(dú)計(jì)算,那么總的吞吐量等于并發(fā)×Target Throughput。 | 非活躍的線程,沒有對(duì)應(yīng)的吞吐量,按照上述示例(每分鐘):
|
All active threads | 將設(shè)置的吞吐量,分配到活躍的線程上(所有線程組的所有線程),然后這個(gè)線程在上次運(yùn)行自行結(jié)束之后,等待合理時(shí)間(為了控制吞吐量)再次運(yùn)行。 | 多線程組的時(shí)候,要求其他線程組也有一樣的配置按照上述示例:
|
All active threads in current thread group | 將設(shè)置的吞吐量,分配到活躍的線程上(當(dāng)前線程組的活躍線程),然后這個(gè)線程在上次運(yùn)行自行結(jié)束之后,等待合理時(shí)間(為了控制吞吐量)再次運(yùn)行。 | 單線程組的時(shí)候,與上一個(gè)相同。按照上述示例:
|
All active threads(shared) | 將設(shè)置的吞吐量,分配到活躍的線程上(所有線程組的所有線程),所有線程都會(huì)在所有活躍線程運(yùn)行結(jié)束之后即所有線程結(jié)束之后,等待合理時(shí)間(為了控制吞吐量)再次運(yùn)行。 | 類似全場(chǎng)景的多次延遲釋放,因?yàn)樾枰却谢钴S線程運(yùn)行結(jié)束,按照上述示例分析如下:
|
All active threads in current thread group(shared) | 將設(shè)置的吞吐量,分配到活躍的線程上(當(dāng)前線程組的活躍線程),所有線程都會(huì)在所有活躍線程運(yùn)行結(jié)束之后即所有活躍線程結(jié)束之后,等待合理時(shí)間(為了控制吞吐量)再次運(yùn)行。 | 當(dāng)前線程組中,活躍線程組中線程結(jié)束之后,再等待一點(diǎn)時(shí)間運(yùn)行。
|
其他計(jì)算模式的分布式適配情況
基于的計(jì)算方式 | 應(yīng)用場(chǎng)景 | 全局生效 | 單機(jī)生效 |
All active threads | 全場(chǎng)景吞吐量控制驅(qū)動(dòng):多個(gè)線程組的業(yè)務(wù)模型類似,且全場(chǎng)景的吞吐量固定,即可拆分到單個(gè)線程組的均勻吞吐量。 | 單機(jī)并發(fā)線程是50,Target/2替換為腳本中的值,即單機(jī)上的吞吐量變成腳本中的一半為每分鐘50。全局的吞吐量不變化仍然為每分鐘100。當(dāng)有多個(gè)線程組的時(shí)候,還會(huì)多個(gè)線程組累加。 | 單機(jī)并發(fā)線程是50,單機(jī)上的吞吐量為每分鐘100,全局吞吐量變?yōu)槟_本中的值×IP數(shù),即為每分鐘200。當(dāng)有多個(gè)線程組的時(shí)候,還會(huì)多個(gè)線程組累加。 |
All active threads(shared) | 全場(chǎng)景吞吐量不區(qū)分線程組,略低于多線程組配置值疊加。 | 線程組1配置是100,線程組2配置是200,則全局為150,即兩個(gè)線程組的均值。 | 線程組1配置是100,線程組2配置是200,則單機(jī)為(100+200)/2,全局為300,但是單機(jī)多個(gè)Sampler達(dá)到均衡的時(shí)間更長(zhǎng)。 |
All active threads in current thread group(shared) | 線程組的吞吐量考慮全局活躍,略低于多線程組配置值疊加。 | 線程組1配置是100,線程組2配置是200,則全局為300,是線程組1和2的配置數(shù)累計(jì)之和。 | 線程組1配置是100,線程組2配置是200,則單機(jī)為100+200,全局為600,但是單機(jī)多個(gè)Sampler達(dá)到均衡的時(shí)間更短。 |
文檔內(nèi)容是否對(duì)您有幫助?