1. 概要

このクイックチュートリアルでは、シャットダウンをより適切に処理するようにSpring Bootアプリケーションを構成する方法を説明します。

2. グレースフルシャットダウン

Spring Boot 2.3 以降、Spring Bootは、サーブレットプラットフォームとリアクティブプラットフォームの両方で、4つの組み込みWebサーバー(Tomcat、Jetty、Undertow、およびNetty)すべての正常なシャットダウン機能をサポートするようになりました。

グレースフルシャットダウンを有効にするには、application.propertiesファイルでserver.shutdownプロパティをgracefulに設定するだけです。

server.shutdown=graceful

その後、Tomcat、Netty、およびJettyは、ネットワーク層での新しい要求の受け入れを停止します。 一方、Undertowは引き続き新しいリクエストを受け入れますが、クライアントに503ServiceUnavailable応答を即座に送信します。

デフォルトでは、このプロパティの値は即時、に等しく、サーバーがすぐにシャットダウンされることを意味します。

一部のリクエストは、正常なシャットダウンフェーズが始まる直前に受け入れられる場合があります。 その場合、 t サーバーは、これらのアクティブなリクエストが指定された時間まで作業を終了するのを待ちます。 この猶予期間は、spring.lifecycle.timeout-per-shutdown-phase構成プロパティを使用して構成できます。

spring.lifecycle.timeout-per-shutdown-phase=1m

これを追加すると、サーバーはアクティブなリクエストが完了するまで最大1分間待機します。 このプロパティのデフォルト値は30秒です。

3. 結論

この短いチュートリアルでは、SpringBoot2.3の新しいグレースフルシャットダウン機能を利用する方法を説明しました。