Spring Bootで keepalive を設定する方法

Spring Bootでは、構成ファイルかプログラムによってKeep-Aliveを設定することができます。

  1. 設定ファイルでKeep-Aliveを設定する:
server.tomcat.keepAliveTimeout=60000
server.tomcat.maxKeepAliveRequests=100
  1. サーバのKeep-Aliveタイムアウト時間をミリ秒単位で設定するサーバ.tomcat.keepAliveTimeout属性。上記の例ではタイムアウト時間を60秒に設定しています。
  2. server.tomcat.maxKeepAliveRequestsプロパティは、最大Keep-Aliveリクエスト数を設定します。上記例では最大100リクエストと設定されています。
  1. KeepAliveのプログラムによる設定:Tomcatのコンフィグレーションクラスをカスタマイズすることで、KeepAliveのプログラムによる設定を行うことができます。例えば、以下のような設定を追加します。
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        return new TomcatServletWebServerFactory() {
            @Override
            protected void customizeConnector(Connector connector) {
                super.customizeConnector(connector);
                if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                    ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setKeepAliveTimeout(60000);
                    ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxKeepAliveRequests(100);
                }
            }
        };
    }
}

上記の例では、TomcatServletWebServerFactory クラスをカスタマイズし、customizeConnector メソッドをオーバーライドすることで、Keep-Alive のタイムアウト時間と、最大リクエスト数を設定します。

なお、具体的な設定方法はSpring Bootのバージョンや利用するコンテナによっても異なる点に注意してください。記載例はSpring Boot 2.x系を用いて、たとえばTomcatをコンテナとして利用する場合です。異なるバージョンやコンテナの場合は適宜調整してください。

bannerAds