Quick question about handling OAuth token expiration when simulating high-concurrency API traffic from Singapore.
I am running a JMeter 5.6.2 script to test the throughput of the /api/v2/architect/flows endpoint. The goal is to simulate 500 concurrent users fetching flow configurations. Everything works fine for the first 100 requests, but then I start seeing intermittent 401 Unauthorized errors.
I have a JSR223 PreProcessor in JMeter that checks the token expiry and calls /oauth/token to refresh it if needed. However, under load, multiple threads seem to trigger the refresh simultaneously, resulting in a rate limit 429 on the auth endpoint itself. This causes the main test threads to hang waiting for a valid token, skewing the latency metrics completely.
The environment is Genesys Cloud (US-East). I am using a dedicated test tenant for this. The JMeter config uses a simple controller with a loop count of 100 per thread group.
Is there a recommended pattern for managing token refresh in a high-concurrency load test? Should I be using a singleton token manager in JMeter, or is there a specific header or parameter I can use to batch the refresh requests?
Currently, my script looks like this:
- Thread Group: 500 threads, ramp-up 60 seconds
- HTTP Request Defaults: Base URL
https://api.mypurecloud.com - PreProcessor: Checks
expclaim in JWT. Ifexp < now + 60s, calls/oauth/tokenwithgrant_type=refresh_token.
The issue is that when 50 threads check the token at the same millisecond, they all decide it’s expired and hit the auth server. This creates a thundering herd problem on the /oauth/token endpoint.
Any advice on how to structure this in JMeter to avoid hitting the auth rate limits while maintaining accurate concurrency simulation? I want to ensure the load test reflects real-world API throughput without being bottlenecked by auth mechanics.