Revert LingeringTimeout and change default value for ReadTimeout
Co-authored-by: Romain <rtribotte@users.noreply.github.com>
This commit is contained in:
parent
d53f5f01a0
commit
099c7e9444
14 changed files with 125 additions and 389 deletions
|
@ -578,7 +578,7 @@ the maximum user-defined router priority value is:
|
|||
- `(MaxInt32 - 1000)` for 32-bit platforms,
|
||||
- `(MaxInt64 - 1000)` for 64-bit platforms.
|
||||
|
||||
### <EntryPoint>.Transport.RespondingTimeouts.<Timeout>
|
||||
### EntryPoint.Transport.RespondingTimeouts.<Timeout>
|
||||
|
||||
Starting with `v2.11.1` the following timeout options are deprecated:
|
||||
|
||||
|
@ -592,7 +592,7 @@ They have been replaced by:
|
|||
- `<entryPoint>.transport.respondingTimeouts.http.writeTimeout`
|
||||
- `<entryPoint>.transport.respondingTimeouts.http.idleTimeout`
|
||||
|
||||
### <EntryPoint>.Transport.RespondingTimeouts.TCP.LingeringTimeout
|
||||
### EntryPoint.Transport.RespondingTimeouts.TCP.LingeringTimeout
|
||||
|
||||
Starting with `v2.11.1` a new `lingeringTimeout` entryPoints option has been introduced, with a default value of 2s.
|
||||
|
||||
|
@ -609,3 +609,34 @@ Increasing the `lingeringTimeout` value could be the solution notably if you are
|
|||
- TCP: `Error while handling TCP connection: readfrom tcp X.X.X.X:X->X.X.X.X:X: read tcp X.X.X.X:X->X.X.X.X:X: i/o timeout`
|
||||
- HTTP: `'499 Client Closed Request' caused by: context canceled`
|
||||
- HTTP: `ReverseProxy read error during body copy: read tcp X.X.X.X:X->X.X.X.X:X: use of closed network connection`
|
||||
|
||||
## v2.11.2
|
||||
|
||||
### LingeringTimeout
|
||||
|
||||
Starting with `v2.11.2` the `<entrypoint>.transport.respondingTimeouts.tcp.lingeringTimeout` introduced in `v2.11.1` has been removed.
|
||||
|
||||
### RespondingTimeouts.TCP and RespondingTimeouts.HTTP
|
||||
|
||||
Starting with `v2.11.2` the `respondingTimeouts.tcp` and `respondingTimeouts.http` sections introduced in `v2.11.1` have been removed.
|
||||
To configure responding timeouts
|
||||
|
||||
### EntryPoint.Transport.RespondingTimeouts.ReadTimeout
|
||||
|
||||
Starting with `v2.11.2` the entryPoints `readTimeout` option default value changed to 5 seconds.
|
||||
|
||||
For HTTP, this option defines the maximum duration for reading the entire request, including the body.
|
||||
For TCP, this option defines the maximum duration for the first bytes to be read on the connection.
|
||||
|
||||
The default value was previously set to zero, which means no timeout.
|
||||
|
||||
This change has been done to avoid Traefik instances with the default configuration to be hanging forever while waiting for bytes to be read on the connection.
|
||||
|
||||
We suggest to adapt this value accordingly to your situation, as the new default value is purposely narrowed,
|
||||
it can make the connection be closed too early.
|
||||
|
||||
Increasing the `readTimeout` value could be the solution notably if you are dealing with the following errors:
|
||||
|
||||
- TCP: `Error while handling TCP connection: readfrom tcp X.X.X.X:X->X.X.X.X:X: read tcp X.X.X.X:X->X.X.X.X:X: i/o timeout`
|
||||
- HTTP: `'499 Client Closed Request' caused by: context canceled`
|
||||
- HTTP: `ReverseProxy read error during body copy: read tcp X.X.X.X:X->X.X.X.X:X: use of closed network connection`
|
||||
|
|
|
@ -183,26 +183,14 @@ Duration to give active requests a chance to finish before Traefik stops. (Defau
|
|||
`--entrypoints.<name>.transport.lifecycle.requestacceptgracetimeout`:
|
||||
Duration to keep accepting requests before Traefik initiates the graceful shutdown procedure. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.http.idletimeout`:
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.idletimeout`:
|
||||
IdleTimeout is the maximum amount duration an idle (keep-alive) connection will remain idle before closing itself. If zero, no timeout is set. (Default: ```180```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.http.readtimeout`:
|
||||
ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.http.writetimeout`:
|
||||
WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.idletimeout`:
|
||||
(Deprecated) IdleTimeout is the maximum amount duration an idle (keep-alive) connection will remain idle before closing itself. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.readtimeout`:
|
||||
(Deprecated) ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.tcp.lingeringtimeout`:
|
||||
LingeringTimeout is the maximum duration between each TCP read operation on the connection. If zero, no timeout is set. (Default: ```2```)
|
||||
ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```5```)
|
||||
|
||||
`--entrypoints.<name>.transport.respondingtimeouts.writetimeout`:
|
||||
(Deprecated) WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`--entrypoints.<name>.udp.timeout`:
|
||||
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
||||
|
|
|
@ -183,26 +183,14 @@ Duration to give active requests a chance to finish before Traefik stops. (Defau
|
|||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_LIFECYCLE_REQUESTACCEPTGRACETIMEOUT`:
|
||||
Duration to keep accepting requests before Traefik initiates the graceful shutdown procedure. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_HTTP_IDLETIMEOUT`:
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_IDLETIMEOUT`:
|
||||
IdleTimeout is the maximum amount duration an idle (keep-alive) connection will remain idle before closing itself. If zero, no timeout is set. (Default: ```180```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_HTTP_READTIMEOUT`:
|
||||
ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_HTTP_WRITETIMEOUT`:
|
||||
WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_IDLETIMEOUT`:
|
||||
(Deprecated) IdleTimeout is the maximum amount duration an idle (keep-alive) connection will remain idle before closing itself. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_READTIMEOUT`:
|
||||
(Deprecated) ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_TCP_LINGERINGTIMEOUT`:
|
||||
LingeringTimeout is the maximum duration between each TCP read operation on the connection. If zero, no timeout is set. (Default: ```2```)
|
||||
ReadTimeout is the maximum duration for reading the entire request, including the body. If zero, no timeout is set. (Default: ```5```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_TRANSPORT_RESPONDINGTIMEOUTS_WRITETIMEOUT`:
|
||||
(Deprecated) WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
WriteTimeout is the maximum duration before timing out writes of the response. If zero, no timeout is set. (Default: ```0```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_UDP_TIMEOUT`:
|
||||
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
||||
|
|
|
@ -26,12 +26,6 @@
|
|||
readTimeout = "42s"
|
||||
writeTimeout = "42s"
|
||||
idleTimeout = "42s"
|
||||
[entryPoints.EntryPoint0.transport.respondingTimeouts.http]
|
||||
readTimeout = "42s"
|
||||
writeTimeout = "42s"
|
||||
idleTimeout = "42s"
|
||||
[entryPoints.EntryPoint0.transport.respondingTimeouts.tcp]
|
||||
lingeringTimeout = "42s"
|
||||
[entryPoints.EntryPoint0.proxyProtocol]
|
||||
insecure = true
|
||||
trustedIPs = ["foobar", "foobar"]
|
||||
|
|
|
@ -24,12 +24,6 @@ entryPoints:
|
|||
readTimeout: 42s
|
||||
writeTimeout: 42s
|
||||
idleTimeout: 42s
|
||||
http:
|
||||
readTimeout: 42s
|
||||
writeTimeout: 42s
|
||||
idleTimeout: 42s
|
||||
tcp:
|
||||
lingeringTimeout: 42s
|
||||
keepAliveMaxTime: 42s
|
||||
keepAliveMaxRequests: 42
|
||||
proxyProtocol:
|
||||
|
|
|
@ -397,19 +397,19 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
|
||||
#### `respondingTimeouts`
|
||||
|
||||
##### `http`
|
||||
`respondingTimeouts` are timeouts for incoming requests to the Traefik instance.
|
||||
Setting them has no effect for UDP entryPoints.
|
||||
|
||||
`respondingTimeouts.http` are timeouts for incoming requests to the Traefik instance.
|
||||
??? info "`transport.respondingTimeouts.readTimeout`"
|
||||
|
||||
??? info "`transport.respondingTimeouts.http.readTimeout`"
|
||||
|
||||
_Optional, Default=0s_
|
||||
_Optional, Default=5s_
|
||||
|
||||
`readTimeout` is the maximum duration for reading the entire request, including the body.
|
||||
|
||||
If zero, no timeout exists.
|
||||
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
||||
If no units are provided, the value is parsed assuming seconds.
|
||||
For requests with large payloads, this timeout value might be increased.
|
||||
|
||||
```yaml tab="File (YAML)"
|
||||
## Static configuration
|
||||
|
@ -418,8 +418,7 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
address: ":8888"
|
||||
transport:
|
||||
respondingTimeouts:
|
||||
http:
|
||||
readTimeout: 42
|
||||
readTimeout: 42
|
||||
```
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
|
@ -427,17 +426,18 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
[entryPoints]
|
||||
[entryPoints.name]
|
||||
address = ":8888"
|
||||
[entryPoints.name.transport.respondingTimeouts.http]
|
||||
readTimeout = 42
|
||||
[entryPoints.name.transport]
|
||||
[entryPoints.name.transport.respondingTimeouts]
|
||||
readTimeout = 42
|
||||
```
|
||||
|
||||
```bash tab="CLI"
|
||||
## Static configuration
|
||||
--entryPoints.name.address=:8888
|
||||
--entryPoints.name.transport.respondingTimeouts.http.readTimeout=42
|
||||
--entryPoints.name.transport.respondingTimeouts.readTimeout=42
|
||||
```
|
||||
|
||||
??? info "`transport.respondingTimeouts.http.writeTimeout`"
|
||||
??? info "`transport.respondingTimeouts.writeTimeout`"
|
||||
|
||||
_Optional, Default=0s_
|
||||
|
||||
|
@ -455,8 +455,7 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
address: ":8888"
|
||||
transport:
|
||||
respondingTimeouts:
|
||||
http:
|
||||
writeTimeout: 42
|
||||
writeTimeout: 42
|
||||
```
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
|
@ -464,17 +463,18 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
[entryPoints]
|
||||
[entryPoints.name]
|
||||
address = ":8888"
|
||||
[entryPoints.name.transport.respondingTimeouts.http]
|
||||
writeTimeout = 42
|
||||
[entryPoints.name.transport]
|
||||
[entryPoints.name.transport.respondingTimeouts]
|
||||
writeTimeout = 42
|
||||
```
|
||||
|
||||
```bash tab="CLI"
|
||||
## Static configuration
|
||||
--entryPoints.name.address=:8888
|
||||
--entryPoints.name.transport.respondingTimeouts.http.writeTimeout=42
|
||||
--entryPoints.name.transport.respondingTimeouts.writeTimeout=42
|
||||
```
|
||||
|
||||
??? info "`transport.respondingTimeouts.http.idleTimeout`"
|
||||
??? info "`transport.respondingTimeouts.idleTimeout`"
|
||||
|
||||
_Optional, Default=180s_
|
||||
|
||||
|
@ -491,8 +491,7 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
address: ":8888"
|
||||
transport:
|
||||
respondingTimeouts:
|
||||
http:
|
||||
idleTimeout: 42
|
||||
idleTimeout: 42
|
||||
```
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
|
@ -500,54 +499,15 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
|||
[entryPoints]
|
||||
[entryPoints.name]
|
||||
address = ":8888"
|
||||
[entryPoints.name.transport.respondingTimeouts.http]
|
||||
idleTimeout = 42
|
||||
[entryPoints.name.transport]
|
||||
[entryPoints.name.transport.respondingTimeouts]
|
||||
idleTimeout = 42
|
||||
```
|
||||
|
||||
```bash tab="CLI"
|
||||
## Static configuration
|
||||
--entryPoints.name.address=:8888
|
||||
--entryPoints.name.transport.respondingTimeouts.http.idleTimeout=42
|
||||
|
||||
##### `tcp`
|
||||
|
||||
`respondingTimeouts.tcp` are timeouts for client connections to the Traefik instance.
|
||||
|
||||
??? info "`transport.respondingTimeouts.tcp.lingeringTimeout`"
|
||||
|
||||
_Optional, Default=2s_
|
||||
|
||||
`lingeringTimeout` is the maximum duration between each TCP read operation on the connection.
|
||||
As a layer 4 timeout, it also applies during HTTP handling, but respect the configured HTTP server `readTimeout`.
|
||||
|
||||
If zero, the lingering is disabled.
|
||||
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
||||
If no units are provided, the value is parsed assuming seconds.
|
||||
|
||||
```yaml tab="File (YAML)"
|
||||
## Static configuration
|
||||
entryPoints:
|
||||
name:
|
||||
address: ":8888"
|
||||
transport:
|
||||
respondingTimeouts:
|
||||
tcp:
|
||||
lingeringTimeout: 42
|
||||
```
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
## Static configuration
|
||||
[entryPoints]
|
||||
[entryPoints.name]
|
||||
address = ":8888"
|
||||
[entryPoints.name.transport.respondingTimeouts.tcp]
|
||||
lingeringTimeout = 42
|
||||
```
|
||||
|
||||
```bash tab="CLI"
|
||||
## Static configuration
|
||||
--entryPoints.name.address=:8888
|
||||
--entryPoints.name.transport.respondingTimeouts.tcp.lingeringTimeout=42
|
||||
--entryPoints.name.transport.respondingTimeouts.idleTimeout=42
|
||||
```
|
||||
|
||||
#### `lifeCycle`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue