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 avoid 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.
Configuration options
You can configure different types of timeouts by using a Kubernetes Gateway API-native configuration, HTTPListenerPolicy, or a TrafficPolicy as shown in the following table.
Type of timeout | Description | Configured via | Attach to |
---|---|---|---|
Request timeout | Request timeouts configure the time Envoy allows for the entire request stream to be received from the client. |
|
|
Idle timeout | An idle timeout is the time when Envoy terminates the connection to a downstream or upstream service if there no active streams. | HTTPListenerPolicy | Gateway |
Idle stream timeout | An idle stream timeout is the time Envoy allows a stream to exist without activity before it is terminated. | TrafficPolicy |
|
Per-try timeout | Set a shorter timeout for retries than the overall request timeout. |
|
|