Skip to content
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

Clarify global timeouts settings #1638

Open
kenjenkins opened this issue Oct 3, 2024 · 6 comments
Open

Clarify global timeouts settings #1638

kenjenkins opened this issue Oct 3, 2024 · 6 comments

Comments

@kenjenkins
Copy link
Contributor

Page: https://www.pomerium.com/docs/reference/global-timeouts

What's incorrect or missing

  1. The description for "Read Timeout" is confusing to me. What does it mean for "the client to receive an entire HTTP request stream"? (The client is sending the request, not receiving it.)
  2. We should document any timeouts that can be disabled by setting to 0. ("Write Timeout" lists this as the default value but does not explicitly state how this behaves.)

What's the resolution?

  1. It looks like the "Read Timeout" setting controls the Envoy HTTP connection manager request_timeout setting. (see config/envoyconfig/listeners.go#L322) The Envoy docs have a more precise definition of how this timeout is applied.
  2. I think all three of these timeouts can be disabled by setting them to 0, but we should verify this behavior.
@ZPain8464
Copy link
Contributor

@kenjenkins thanks for the suggestions here. Would you be comfortable adding a PR with your suggested changes? That would include verifying the behavior when setting timeouts to 0.

@wasaga
Copy link
Contributor

wasaga commented Oct 8, 2024

@kenjenkins
Copy link
Contributor Author

Thanks Denis, would be good to include a similar diagram here. One wrinkle: I think these timeouts are enforced by Envoy, not by the Go net/http package, so we should probably double-check that they are measured the same way and tweak that diagram if not.

@desimone
Copy link
Collaborator

desimone commented Oct 8, 2024

I believe I copied that diagram, a very long time ago, from fillipo's blog post on go's http timeouts.

https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/

@kenjenkins kenjenkins self-assigned this Oct 8, 2024
@ZPain8464
Copy link
Contributor

ZPain8464 commented Oct 8, 2024

No, I reconstructed this diagram in Miro. I can't find the asset I made now, though.

@kenjenkins
Copy link
Contributor Author

Next steps for this issue:

  • Consider adding a diagram of the request/response flow, and indicate what each timeout measures (maybe this should even show both the downstream request/response and the upstream request/response).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants