Overview
Gateway performance depends on several factors:- Hardware resources: CPU core count, memory amount
- Traffic profile: Concurrent request count, request size, SSE/streaming usage
- Policy complexity: Number and weight of applied policies (e.g., CPU-intensive policies like Content Filtering)
- Backend response time: Latency profile of the target service
Tuning approach — priority order:
- Automatic profile — Sufficient for most environments, no intervention needed
- Tier recommendations — Ready-made parameter sets based on resource size (this page)
- Manual tuning — Fine-tuning based on load test results
Tier-Based Recommended Settings
The following tables show recommended Gateway Worker settings for different hardware profiles. These values should be validated with pre-production load tests.Tier 1 — 2 Core / 2 GB RAM
Suitable for low-traffic environments, development, and PoC scenarios.Tier 2 — 4 Core / 4 GB RAM
Recommended for medium-scale production environments. A balanced starting point for most deployments.Tier 3 — 8 Core / 8 GB RAM
Recommended for high-traffic production environments.Thread Tuning
Worker Threads
Worker threads are the core thread pool that processes incoming HTTP requests.Recommended Thread Values by CPU
General rule:
tuneWorkerThreads ≈ CPU × 512, tuneWorkerMaxThreads ≈ CPU × 1024. These values are based on Undertow’s (the HTTP server used by Gateway) thread management model.IO Threads
IO threads are low-level threads that handle network I/O operations (socket read/write).IO thread count is typically kept equal to the CPU core count. Increasing it provides no benefit in most scenarios; it may cause context switching overhead.
Async Executor Thread Pool
Asynchronous operations such as RestApi Policy, Script Policy, logging, and traffic mirroring use this separate thread pool.Connection Pool Tuning
Routing Connection Pool
Manages HTTP connections to backend services. These values are critical for high concurrent request volumes.
When to increase:
- When 503 errors or connection timeout logs are observed
- When backend services respond slowly and connections are exhausted
- When concurrent request count exceeds current pool limits
Cache Connection Pool
Manages connections to cache services.API Call Connection Pool
Manages external API calls made by RestApi Policy and similar policies.Timeout Tuning
Relationship Between Timeout Parameters
tuneNoRequestTimeout: Connection opened but no HTTP request sent — cleans up idle connectionstuneReadTimeout: Client stopped sending data during request processing — cleans up stuck requeststuneStreamingReadTimeout: For long-lived connections like SSE, Server-Sent Events, and LLM streaming, the normaltuneReadTimeoutis insufficient
SSE/LLM Streaming Scenarios:In streaming connections, clients don’t send data for extended periods, so the normal
tuneReadTimeout may prematurely close the connection. tuneStreamingReadTimeout assigns a dedicated timeout value for streaming connections. The default value of 0 (unlimited) is suitable for most scenarios; however, you may set an appropriate upper limit for your environment to prevent resource leaks.Benchmark Reference
For tier-based performance comparisons and detailed benchmark results, see Capacity Planning.Related Pages
JVM Garbage Collector Tuning
Automatic memory profiles, GC options, and heap configuration
Capacity Planning
Hardware sizing, RAM calculation, and benchmark results
Gateway Runtimes
UI-based configuration and parameter reference for gateway environments
Pod Thread Count Periodic Monitoring
Monitoring thread usage over time and alert mechanisms

