先查询Spring Boot程序的PID,然后再kill -9 PID
,像下面一样
[root@iZ1608aqb7ntn9Z ~]# ps -ef|grep java
root 46858 1 0 5月02 ? 01:32:25 /usr/local/jdk1.8.0_141/bin/java......
root 785288 785269 0 14:36 ? 00:00:11 /usr/local/......
[root@iZ1608aqb7ntn9Z ~]# kill -9 46858
[root@iZ1608aqb7ntn9Z ~]# ps -ef|grep java
root 785288 785269 0 14:36 ? 00:00:11 /usr/local/......
这种方式的坏处:
首先kill -9 的命令类似于直接断电,当然除了直接终止程序正在执行的任务导致数据丢失以外,在单体环境下该命令没有太大的坏处,但是在分布式环境下就大不同了。
例如下图所示:将App2进行关闭后,再分布式注册中心中App2并没有直接被清除,这就导致了服务消费者还有可能去调用App2的接口进而导致报错,除此以外,在分布式事务中异常关闭系统也可能造成很不好的影响。
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置文件:
server.port=8443
#启用shutdown
management.endpoint.shutdown.enabled=true
management.endpoints.web.exposure.include=*
# 自定义管理端点的前缀(保证安全) http://127.0.0.1:[port]/MyActuator/shutdown
management.endpoints.web.base-path=/MyActuator
# 自定义端口
management.server.port=18443
# 不允许远程管理连接(不允许外部调用保证安全)
management.server.address=127.0.0.1
配置类:
/**
* @desc: ShutDownConfig
* @author: YanMingXin
* @create: 2021/8/4-16:16
**/
@Configuration
public class ShutDownConfig {
@Bean
public ShutDownConfig getTerminateBean() {
return null;
}
@PreDestroy
public static void preDestroy() {
System.out.println("This spring application is destroyed");
}
}
效果:
命令行输入:curl -X POST http://127.0.0.1:18443/MyActuator/shutdown
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。