Zuul Timeouts
19.13 Zuul Timeouts
If Zuul is using service discovery there are two timeouts you need to be concerned with, the Hystrix timeout (since all routes are wrapped in Hystrix commands by default) and the Ribbon timeout. The Hystrix timeout needs to take into account the Ribbon read and connect timeout PLUS the total number of retries that will happen for that service. By default Spring Cloud Zuul will do its best to calculate the Hystrix timeout for you UNLESS you specify the Hystrix timeout explicitly.
The Hystrix timeout is calculated using the following formula:
(ribbon.ConnectTimeout + ribbon.ReadTimeout) * (ribbon.MaxAutoRetries + 1) * (ribbon.MaxAutoRetriesNextServer + 1)
As an example, if you set the following properties in your application properties
application.yml.
ribbon: ReadTimeout:100 ConnectTimeout:500 MaxAutoRetries:1 MaxAutoRetriesNextServer:1
Then the Hystrix timeout (for all routes in this case) will be set to 2400ms.
You can configure the Hystrix timeout for individual routes using |
If you choose to not configure the above properties than the default values will be used therefore the default Hystrix timeout will be set to |
If you set hystrix.command.commandKey.execution.isolation.thread.timeoutInMilliseconds
, where commandKey
is the route id, or set hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
than these values will be used for the Hystrix timeout regardless of what you have set for the ribbon.*
properties. If you set either of these properties YOU are responsible for making sure it takes into account the Ribbon connect and read timeouts as well as any retries that may happen.