全部產品
Search
文件中心

Performance Testing Service:JMeter配置RPS限制

更新時間:Feb 16, 2025

RPS即每秒請求數(Request Per Second),通常用來描述施壓引擎實際發出的壓力大小。更適合API介面測試的情境。下面介紹一下基於JMeter實現RPS控制的方法。

配置RPS限制

為了複用已有的JMeter指令碼,PTS支援使用原生JMeter引擎進行壓測。JMeter引擎預設使用併發模式壓測,施壓RPS主要由並發數和伺服器回應時間決定。 並發數過低時可能達不到預期的RPS,並發數過高時可能壓力過大壓垮伺服器。 為了避免RPS壓力過大壓垮伺服器,JMeter提供了Constant Throughput Timer組件, 可限制最大施壓RPS壓力大小。

JMeter指令碼線程組下添加Constant Throughput Timer節點,即可對該線程組發出的RPS壓力大小進行限制。操作如下:

image

注意事項

配置Constant Throughput Timer節點時有兩點需要注意:

  1. Calculate Throughput based on必須設定為this thread only,即按單個線程限制。PTS自動根據情境並發數分配多個JMeter引擎, 其他選項只能對單個引擎進行限制,無法有效地進行全域RPS限制。所以可以通過設定單個線程的限制和並發數達到整體RPS限制的效果。

  2. Constant Throughput TimerTarget throughput以分鐘為單位配置,RPS值換算成分鐘時,需要乘以60 (1分鐘=60秒),可使用__jexl3進行計算。 如期望單線程RPS為0.5,則Target throughput可設定為${__jexl3(0.5 * 60)}。如果要指定全域RPS限制,可用全域RPS限制除以並發數,得到單個線程的RPS限制。

配置樣本如下:

image

綜上,可以看出JMeter的RPS控制比較複雜,不但依賴於設定合理的並發,而且無法即時調整並發,RPS不一定能完全實現需要的效果。對於RPS的壓測模式,建議直接使用PTS原生情境進行壓測,支援直接的RPS設定和秒級調整,完全不用考慮並發的概念。請參見壓力模式與量級配置