Search code examples
javaspring-boothttpjettykeep-alive

Jetty Server : keep alive timeout for HTTP connection


So HTTP.1 version and above support persistence connection.

Now, we are creating a rest application which should be stateless. And we are putting limitation of number of connections at a time.

But if I go through the HTTP 1.0 doc, this approach seems problematic.

It says the server will keep the connection open unless client says to close.

So, my question is what if client does not close? It can give me denial of service error if a connection is always active.

What is the default timeout with jetty and how can I configure it? I am not able to find appropriate documentation.


Solution

  • The HttpConfiguration has a configuration setting setIdleTimeout(long ms)

    https://www.eclipse.org/jetty/javadoc/jetty-9/org/eclipse/jetty/server/HttpConfiguration.html#setIdleTimeout(long)

    That controls the idle timeout between requests.

    The HttpConfiguration object is part of the ServerConnector that controls the listening port and accepts connections.

    The idle timeout default is -1 in code (infinite).

    But it's 30,000ms in jetty-home (and the older jetty-distribution).

    Use jetty-start property jetty.http.idleTimeout to configure it for your specific jetty-base instance/configuration if using standalone jetty.

    Note: if you use Servlet Async features, then the idle timeouts configured at the container are overridden by the Servlet Async configuration for timeout. (If you use Servlet Async, then ALWAYS specify a valid timeout, never disable it, or set it to infinite, or set it to massively huge value)