About timeouts
A timeout is the amount of time (duration) that the gateway waits for replies from a backend service before the service is considered unavailable. This setting can be useful to prevent your apps from hanging or to fail if no response is returned in a specific timeframe. With timeouts, calls either succeed or fail within a predictable timeframe.
The time an app needs to process a request can vary a lot. For this reason, applying the same timeout across services can cause a variety of issues. For example, a timeout that is too long can result in excessive latency from waiting for replies from failing services. On the other hand, a timeout that is too short can result in calls failing unnecessarily while waiting for an operation that needs responses from multiple services. Set app-specific timeouts instead of a single timeout.
Configuration options
You can configure different types of timeouts by using a Kubernetes Gateway API-native configuration or an AgentgatewayPolicy as shown in the following table.
| Type of timeout | Description | Configured via | Attach to |
|---|---|---|---|
| Request timeout | Request timeouts configure the time the proxy allows for the entire request stream to be received from the client. |
|
|
| Idle timeout | An idle timeout is the time when the proxy terminates the connection to a downstream or upstream service if there are no active streams. |
|
|
| Per-try timeout | Set a shorter timeout for retries than the overall request timeout. |
|
|