For the latest stable version, please use Spring Boot 3.4.1! |
Graceful Shutdown
Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and servlet-based web applications.
It occurs as part of closing the application context and is performed in the earliest phase of stopping SmartLifecycle
beans.
This stop processing uses a timeout which provides a grace period during which existing requests will be allowed to complete but no new requests will be permitted.
The exact way in which new requests are not permitted varies depending on the web server that is being used. Implementations may stop accepting requests at the network layer, or they may return a response with a specific HTTP status code or HTTP header. The use of persistent connections can also change the way that requests stop being accepted.
To learn about more the specific method used with your web server, see the shutDownGracefully API documentation for TomcatWebServer.shutDownGracefully(GracefulShutdownCallback) , NettyWebServer.shutDownGracefully(GracefulShutdownCallback) , JettyWebServer.shutDownGracefully(GracefulShutdownCallback) or UndertowWebServer.shutDownGracefully(GracefulShutdownCallback) .
|
Jetty, Reactor Netty, and Tomcat will stop accepting new requests at the network layer. Undertow will accept new connections but respond immediately with a service unavailable (503) response.
To enable graceful shutdown, configure the server.shutdown
property, as shown in the following example:
-
Properties
-
YAML
server.shutdown=graceful
server:
shutdown: "graceful"
To configure the timeout period, configure the spring.lifecycle.timeout-per-shutdown-phase
property, as shown in the following example:
-
Properties
-
YAML
spring.lifecycle.timeout-per-shutdown-phase=20s
spring:
lifecycle:
timeout-per-shutdown-phase: "20s"
Using graceful shutdown with your IDE may not work properly if it does not send a proper SIGTERM signal.
See the documentation of your IDE for more details.
|