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

[HTTP2] Count down available streams in HTTP2Connections #506

Open
fabianfett opened this issue Dec 1, 2021 · 1 comment
Open

[HTTP2] Count down available streams in HTTP2Connections #506

fabianfett opened this issue Dec 1, 2021 · 1 comment

Comments

@fabianfett
Copy link
Member

Currently we don't make sure that we schedule a maximum of Int32.max/2 (= 1073741823) on a single HTTP2Connection. We should do so in the connection and regular communicate the remaining streams back to the HTTPConnectionPool.

To allow use cases like querying services behind AWS ALB we should also make the starting max number configurable for users. If a user knows they will use AWS ALB, they should be able to configure 10k max streams on the client.

@fabianfett
Copy link
Member Author

AWS Application Load Balancer seems to send a GOAWAY after 10k streams:

▿ FramePayload
  ▿ goAway : 3 elements
    ▿ lastStreamID : HTTP2StreamID(19999)
      - networkStreamID : 19999
    ▿ errorCode : HTTP2ErrorCode<0x0 No Error>
      - _networkCode : 0
    - opaqueData : nil

The load balancer sends a response code of 000

With HTTP/2 connections, if the compressed length of any of the headers exceeds 8K bytes or if the number of requests served through one connection exceeds 10,000, the load balancer sends a GOAWAY frame and closes the connection with a TCP FIN.

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

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

No branches or pull requests

1 participant