Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how long the connection will be kept alive in Http/2

How long the connection will be kept alive in Http/2 ? I understand the Http/2 uses one connection per domain and does multiplexing. But i didn't get any information on how long the connection will be kept alive.

like image 992
Navin GV Avatar asked Dec 16 '18 15:12

Navin GV


People also ask

Does http2 support keep-alive?

In HTTP/2, multiple asset requests can reuse a single TCP connection. Unlike HTTP 1.1 requests that use the Keep-Alive header, the requests and response binary frames in HTTP/2 are interleaved and head-of-line blocking does not happen.

How long does connection keep alive last?

It sets how long your server should wait for new requests from clients. A value between 7 to 10 seconds is usually ideal. With higher traffic this value can go extremely higher to make sure there is no frequent TCP connection re-initiated. If this value goes down too much, Keep-Alive loses it's purpose!

How do I keep my HTTP connection alive?

The Keep-Alive general header allows the sender to hint about how the connection may be used to set a timeout and a maximum amount of requests. Note: Set the Connection header to "keep-alive" for this header to have any effect.

What is HTTP keep-alive timeout?

The keep alive timeout on the Message Processor allows a single TCP connection to send and receive multiple HTTP requests/responses from/to the backend server, instead of opening a new connection for every request/response pair.


1 Answers

As with HTTP/1.1, the time a connection is kept alive in HTTP/2 depends on the implementation of the client and server. The HTTP/2 specification says

HTTP/2 connections are persistent. For best performance, it is expected that clients will not close connections until it is determined that no further communication with a server is necessary (for example, when a user navigates away from a particular web page) or until the server closes the connection.

[...]

Servers are encouraged to maintain open connections for as long as possible but are permitted to terminate idle connections if necessary. When either endpoint chooses to close the transport-layer TCP connection, the terminating endpoint SHOULD first send a GOAWAY (Section 6.8) frame so that both endpoints can reliably determine whether previously sent frames have been processed and gracefully complete or terminate any necessary remaining tasks.

So, both endpoints can gracefully close a connection by sending a GOAWAY frame. Nginx and Apache let you configure a timeout after which an idle HTTP/2 connection is closed. The default value for nginx is 3 minutes, for Apache it is 5 seconds.

like image 75
sauerburger Avatar answered Nov 26 '22 11:11

sauerburger