Copy edit for Setting Request Timeouts. (#1730)

Signed-off-by: Stephen Gilson <gilsonsm@google.com>
This commit is contained in:
Stephen Gilson 2018-07-10 08:29:33 -04:00 committed by Martin Taillefer
parent 6e97d79a2d
commit a2836ab2b7
1 changed files with 18 additions and 20 deletions

View File

@ -27,12 +27,12 @@ This task shows you how to setup request timeouts in Envoy using Istio.
## Request timeouts
A timeout for http requests can be specified using the *httpReqTimeout* field of a routing rule.
By default, the timeout is 15 seconds, but in this task we'll override the `reviews` service
By default, the timeout is 15 seconds, but in this task you override the `reviews` service
timeout to 1 second.
To see its effect, however, we'll also introduce an artificial 2 second delay in calls
To see its effect, however, you also introduce an artificial 2 second delay in calls
to the `ratings` service.
1. Route requests to v2 of the `reviews` service, i.e., a version that calls the `ratings` service
1. Route requests to v2 of the `reviews` service, i.e., a version that calls the `ratings` service:
{{< text bash >}}
$ cat <<EOF | istioctl replace -f -
@ -74,12 +74,12 @@ to the `ratings` service.
EOF
{{< /text >}}
1. Open the Bookinfo URL (http://$GATEWAY_URL/productpage) in your browser
1. Open the Bookinfo URL `http://$GATEWAY_URL/productpage` in your browser.
You should see the Bookinfo application working normally (with ratings stars displayed),
but there is a 2 second delay whenever you refresh the page.
1. Now add a 1 second request timeout for calls to the `reviews` service
1. Now add a 1 second request timeout for calls to the `reviews` service:
{{< text bash >}}
$ cat <<EOF | istioctl replace -f -
@ -99,44 +99,42 @@ to the `ratings` service.
EOF
{{< /text >}}
1. Refresh the Bookinfo web page
1. Refresh the Bookinfo web page.
You should now see that it returns in 1 second (instead of 2), but the reviews are unavailable.
You should now see that it returns in 1 second, instead of 2, but the reviews are unavailable.
## Understanding what happened
In this task, you used Istio to set the request timeout for calls to the `reviews`
microservice to 1 second (instead of the default 15 seconds).
microservice to 1 second instead of the default of 15 seconds.
Since the `reviews` service subsequently calls the `ratings` service when handling requests,
you used Istio to inject a 2 second delay in calls to `ratings`, so that you would cause the
`reviews` service to take longer than 1 second to complete and consequently you could see the
timeout in action.
you used Istio to inject a 2 second delay in calls to `ratings` to cause the
`reviews` service to take longer than 1 second to complete and consequently you could see the timeout in action.
You observed that the Bookinfo productpage (which calls the `reviews` service to populate the page),
instead of displaying reviews, displayed
You observed that instead of displaying reviews, the Bookinfo productpage (which calls the `reviews` service to populate the page) displayed
the message: Sorry, product reviews are currently unavailable for this book.
This was the result of it receiving the timeout error from the `reviews` service.
If you check out the [fault injection task](/docs/tasks/traffic-management/fault-injection/), you'll find out that the `productpage`
If you examine the [fault injection task](/docs/tasks/traffic-management/fault-injection/), you'll find out that the `productpage`
microservice also has its own application-level timeout (3 seconds) for calls to the `reviews` microservice.
Notice that in this task we used an Istio route rule to set the timeout to 1 second.
Had you instead set the timeout to something greater than 3 seconds (e.g., 4 seconds) the timeout
would have had no effect since the more restrictive of the two will take precedence.
Had you instead set the timeout to something greater than 3 seconds (such as 4 seconds) the timeout
would have had no effect since the more restrictive of the two takes precedence.
More details can be found [here](/docs/concepts/traffic-management/#failure-handling-faq).
One more thing to note about timeouts in Istio is that in addition to overriding them in route rules,
as you did in this task, they can also be overridden on a per-request basis if the application adds
an "x-envoy-upstream-rq-timeout-ms" header on outbound requests. In the header
the timeout is specified in millisecond (instead of second) units.
an `x-envoy-upstream-rq-timeout-ms` header on outbound requests. In the header,
the timeout is specified in milliseconds instead of seconds.
## Cleanup
* Remove the application routing rules.
* Remove the application routing rules:
{{< text bash >}}
$ istioctl delete -f @samples/bookinfo/routing/route-rule-all-v1.yaml@
{{< /text >}}
* If you are not planning to explore any follow-on tasks, refer to the
* If you are not planning to explore any follow-on tasks, see the
[Bookinfo cleanup](/docs/examples/bookinfo/#cleanup) instructions
to shutdown the application.