Decrease Swift proxy timeouts for GET/HEAD requests

Adds a new parameter named SwiftProxyRecoverableNodeTimeout. The default
node timeout is 10 seconds in Swift, however this has been set to 60
seconds in TripleO in case there are slow nodes. However, this affects
all requests - GET, HEAD and PUT. GET/HEAD requests are typically much
faster, thus it makes sense to use a lower timeout to recover earlier
from node failures.

This increases overall stability, because the proxy can select another
backend node to retry the request if an initial HEAD request already
returns a timeout, for example when uploading Glance images.

Depends-On: I2f56bc456427d5deb30d86ad70e890d0897ef0c9
Change-Id: I9694435d5c54568a1636195d73d53903c44d998b
This commit is contained in:
Christian Schwede 2020-09-11 15:33:42 +02:00
parent a584099b9d
commit f08905d7ff
2 changed files with 16 additions and 0 deletions

View File

@ -54,6 +54,10 @@ parameters:
default: 60
description: Timeout for requests going from swift-proxy to swift a/c/o services.
type: number
SwiftProxyRecoverableNodeTimeout:
default: 30
description: Timeout for GET/HEAD requests going from swift-proxy to swift a/c/o services.
type: number
SwiftWorkers:
default: 0
description: Number of workers for Swift service.
@ -162,6 +166,7 @@ outputs:
swift::proxy::authtoken::region_name: {get_param: KeystoneRegion}
swift::proxy::s3token::www_authenticate_uri: {get_param: [EndpointMap, KeystoneV3Internal, uri]}
swift::proxy::node_timeout: {get_param: SwiftProxyNodeTimeout}
swift::proxy::recoverable_node_timeout: {get_param: SwiftProxyRecoverableNodeTimeout}
-
if:
- swift_workers_zero

View File

@ -0,0 +1,11 @@
---
fixes:
- |
Decrease Swift proxy timeouts for GET/HEAD requests using a new parameter
named SwiftProxyRecoverableNodeTimeout. The default node timeout is 10
seconds in Swift, however this has been set to 60 seconds in TripleO in
case there are slow nodes. However, this affects all requests - GET, HEAD
and PUT. GET/HEAD requests are typically much faster, thus it makes sense
to use a lower timeout to recover earlier from node failures. This will
increase stability, because the proxy can select another backend node to
retry the request.