前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求求你们别再用kill-9了,这才是SpringBoot停机的正确方式!!!

求求你们别再用kill-9了,这才是SpringBoot停机的正确方式!!!

原创
作者头像
疯狂的KK
发布2023-05-09 15:30:27
3490
发布2023-05-09 15:30:27
举报

在Spring Boot应用中,有几种常见的停止方式:1. 使用CTRL+C:这是最简单的停止方式,但不推荐在生产环境使用。因为它会立即终止进程,没有机会实现优雅关闭。2. 使用SIGTERM信号:发送SIGTERM信号到Spring Boot进程的PID,Spring Boot会注册一个ShutdownHook来优雅关闭应用。这是生产环境推荐的停止方式。


kill -SIGTERM pid

3. 调用Actuator的shutdown接口:Actuator暴露了一个/shutdown的HTTP端点来关闭应用。这也是生产环境推荐的方式之一。


curl -X POST http://localhost:8080/actuator/shutdown

4. 运行应用提供的退出命令:如果在应用中提供了自定义的退出命令,也可以通过运行该命令来关闭应用。比如,在应用的入口类中提供:


@Component
public class ExitCommand implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.exit(0);
    }
}

然后运行命令:


curl -X POST http://localhost:8080/exit 

5. 调用ApplicationContext的close方法:通过在程序中直接调用`applicationContext.close()`方法关闭应用上下文来触发关闭。


@Autowired
private ConfigurableApplicationContext applicationContext;

public void exit() {
    applicationContext.close();
}

然后通过HTTP请求、JMX等方式调用该`exit()`方法。总之,在生产环境中推荐使用Actuator接口的方式或发送SIGINT/SIGTERM信号的方式来关闭Spring Boot应用。这些方式能够实现优雅关闭,释放资源。而CTRL+C方式只适合在开发环境使用。正确关闭SpringBoot应用,以释放应用占用的资源,这一点在生产环境尤其重要。我们在开发和运维Spring Boot应用时,需要清楚各种停止方式的区别,选用适合的方式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档