Platform API WebSocket connection drops at 50 concurrent threads in JMeter

Looking for advice on why the Genesys Cloud Platform API WebSocket connections are dropping unexpectedly during a load test simulation.

Running JMeter 5.6.2 from a server in Asia/Singapore. The goal is to validate the concurrent connection capacity for real-time event subscriptions. Configured a thread group with 50 threads, ramp-up period of 10 seconds, and a loop count of 100. Using the JMeter WebSocket sampler to connect to wss://api.mypurecloud.com/api/v2/analytics/events. Authentication is handled via a pre-request script that fetches a valid OAuth2 token.

The first 20 connections establish successfully and receive event payloads. However, once the thread count exceeds 30, the WebSocket handshake starts failing intermittently. The JMeter logs show java.net.SocketException: Connection reset or WebSocket connection failed: Status code was 400. No specific error message body is returned in the WebSocket handshake response, just a closed connection.

Checked the server-side logs via the Genesys Cloud admin console, but no explicit rate-limiting (429) events are logged for the WebSocket endpoint at this volume. The HTTP API calls for token generation are succeeding fine. Suspect this might be a limit on concurrent WebSocket sessions per tenant or per IP address, but the documentation is vague on exact thresholds for free/developer tenants vs. production.

Also tried reducing the ramp-up time to 5 seconds to see if it was a burst issue, but the failures persist around the 30-40 connection mark. The Connection header is set to Upgrade and Upgrade header is websocket. Subprotocol is v2.events.

Is there a known limit on concurrent WebSocket subscriptions for the Platform API? Should I be batching these requests differently? Any insights on how to scale this beyond 30 concurrent listeners?

What is the recommended way to handle high-concurrency WebSocket subscriptions in Genesys Cloud without hitting connection reset errors?