Mivel napo óta ezzel szórakoztatom magam, gondoltam íratok erről pár sort az AI-val, mint emlékeztető, ha újra elő kell vennem a témát. Röviden: vannak esetek, amikor százalékos arányban kell hívásokat eszközölni a performancia mérésben. Ebben tud segíteni a Throughput Controller.
Nézzük, mint mond erről az AI:
A Throughput Controller az Apache JMeter egyik legfontosabb eleme, amikor a valós felhasználói viselkedést szeretnénk szimulálni. Neve ellenére nem a másodpercenkénti kérések számát (RPS) korlátozza (arra a Constant Throughput Timer való), hanem azt határozza meg, hogy a teszt lépései milyen arányban vagy rögzített alkalommal fussanak le.
Mire jó a Throughput Controller?
Egy webáruháznál a látogatók nem egyforma arányban böngésznek és vásárolnak:
- 80% csak böngészi a termékeket.
- 15% kosárba tesz valamit.
- 5% eljut a fizetésig.
A Throughput Controller segítségével pontosan ezt a megoszlást képezhetjük le egyetlen Thread Group-on belül.
A két fő működési mód (Based On)
| Mód | Leírás | Mikor használd? |
| Percent Executions | A beállított százalékos arányban engedi lefutni a gyermek kéréseket a teszt során. | Valós felhasználói eloszlás szimulálásához (pl. 80-15-5% szabály). |
| Total Executions | Legfeljebb egy megadott fix alkalommal engedi lefutni a kérést, utána kihagyja. | Egyszeri beállításokhoz vagy korlátozott műveletekhez (pl. adatbázis-feltöltés). |
Fontos beállítás (Per User): Ha be van pipálva, a számítás nem a teljes tesztre, hanem szálanként (felhasználónként) érvényesül.
Gyakorlati példa: Webáruház forgalomszimuláció
Tételezzük fel, hogy 100 szálat (felhasználót) indítunk egy hurokban (Loop Count: 100). A célunk a fent említett 80%-15%-5%-os megoszlás.
Struktúra a JMeterben:
Plaintext
Test Plan
└── Thread Group (100 Threads, Loop: 10)
├── Throughput Controller (Percent Executions: 80.0)
│ └── HTTP Request: Termékoldal megtekintése
├── Throughput Controller (Percent Executions: 15.0)
│ └── HTTP Request: Kosárba helyezés
└── Throughput Controller (Percent Executions: 5.0)
└── HTTP Request: Fizetés
Működés:
- A 1000 összes lefutásból nagyjából 800 alkalommal a termékoldal kérés fog lefutni.
- 150 alkalommal a kosárba helyezés.
- 50 alkalommal pedig a fizetés lép fel.
Gyakori hibák és tippek
- Ne keverd a Constant Throughput Timer-rel: Ha az a célod, hogy a szervert pontosan 100 req/sec terhelés alatt tartsd, használj Timert. A Throughput Controller az arányokról szól, nem a sebességről.
- Keresztülfutás (Overhead): Ha a szabályok összege nem 100%, vagy egy szál egyik controllernek sem felel meg az adott iterációban, a szál kihagyja az adott részt és lép a következő hurokra.
- Egymásba ágyazás: Összetettebb scenárióknál Simple Controller-rel vagy Transaction Controller-rel kombinálva egész folyamatokat is elhelyezhetsz egy-egy Throughput Controller alá.