-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support upstream timeout #53
Comments
Even when adding the "x-envoy-upstream-rq-timeout-ms" header to the request to override the default 15s timeout requests still error out with upstream request timeout. |
Attempting to override using header |
Any update on this? We are blocked on a full roll out because of this. |
We're researching this right now to see why the header isn't being honored, and to importantly clarify when it can be honored. In the meantime, @stphivos @SleeperSmith would you be able to tell us the following information
|
The downstream requester: Nginx as ingress controller -> envoy proxy as sidecar. |
A quick update on why this isn't working. Broadly, the issue is an interaction between how envoy determines if the request is internal (which is what allows the use of envoy control headers) and the setting of use_remote_address. Currently, App Mesh configuration turns use_remote_address off. The result is that the downstream Envoy doesn't consider the request internal (as no x-forwarded-for is set) and x-forwarded-for is not appended to, and the upstream will not respect the control header for the same reason. Looking forward, we'd like to support upstream timeouts on both the route (respected at the downstream) and on a VNode listener (respected at the upstream). |
@efe-selcuk, @dastbe thanks. In our case a standard request is as follows:
where |
@stphivos that sounds like the timeout is working? What settings / host headers did you set? I have a similar set up and that should work well enough for me. Can't you just set nginx timeout to something higher? |
@SleeperSmith both
The request times out at
Also when logging the http headers at the flask app i get:
I tried setting different headers from the http client but still no luck:
I'm using the latest release of appmesh-inject (v0.2.0) which uses |
I have got an application that streams the response back to the client. Due to the size it can take more than a minute to finish. However envoy always terminates the connection after 15 seconds. I have tried sending keep-alives, chunking, streaming, it is always 15 seconds and connection gets closed. Are there any workarounds I could try applying? As other mentioned before, headers are being ignored. |
I have the same issue also, I came across this after searching for some time, and I also cannot find any mention of this in any documentation on the AWS site, only on envoy documentation, is AppMesh now support changing the timeout based on request headers like in the envoy documentation? https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter |
@bcelenza so this has been accepted as being worked on, but I'm just wondering why I don't see it on the project road map. Just want to see if this is being worked on or this is under a slightly different status? |
@SleeperSmith sorry about that, added it to the roadmap project. We are actively working on it now. 😄 |
Imagine my disappointment upon getting 29 meshed services deployed with CDK only to find a slew of hard limit 15s timeouts. This is not usable in this state. Awaiting a resolution. |
any update on this? we also just migrated 2 of our applications to App Mesh and now facing time out issues |
Just to chime in here. We've withheld further roll out of AWS AppMesh specifically because of this too. Some 15 something services. |
Hey just to give a quick update, this is still work in progress but we are getting more traction here. We had some delays in early 2020, and is now back on track. We are looking at launching this in Q2 2020 (most likely in May 2020). Will keep this thread updated if any more changes. Apologies about the delay here, we are aware that this is a very high priority item and are actively working on it. Thanks! |
As part of providing support for timeouts, we intend to add configurable timeout fields(request timeout and idle timeout) at the Route, Virtual Node listener and probably at the Virtual Gateway too (Virtual Gateway is available in preview) Current Implementation:
Limitation: Future Enhancements (WIP) :
We are also working on to finalise the design for adding timeout at the Virtual gateway route. Thanks. |
Hi All, Timeouts for Routes and Virtual Node Listener are available for testing in our preview channel. Check out the walkthrough to get started. Refer to the docs for route and Virtual Node for more info. Looking forward for your feedback. |
Timeouts is now available in the App Mesh APIs, SDKs and Console for all regions. The Kubernetes controller supports timeout in the latest version v1.0.0 Timeout configuration is supported at route and at Virtual Node listeners. Refer API docs and the userguide for more information. Please note that the Cloudformation support is not released yet, It will be available soon. |
Closing the issue, as the feature is now released. |
hi, the issue was solved for VirtualNodes but how about VirtualGateway? it there a way to set the timeout on them? |
ok, solved this by using a router and setting a timeout for one of the routes. |
Even when setting timeouts on VirtualRouter and VirtualNode level, the is still no timeout defined on VirtualGateways internal self-redirect to 15001. This should be set to the max of all timeouts across all possible routes, but is currently defaulting to 15s. |
@visit1985 Thank you for reporting this. We are aware of this regression where the timeouts are not getting configured at Virtual Gateway when the hostname rewrite is disabled. We are currently working on the fix and is being tracked here |
Allow the upstream timeout to be specified.
https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-field-route-routeaction-timeout
The text was updated successfully, but these errors were encountered: