研究kill 和 kill -9 的区别

研究kill 和 kill -9 的区别

本项目有个接口/test,请求后该接口需要处理很久。在接口还未返回结果的时候,使用killkill -9杀掉进程会怎么样?

  • 用chrome请求/test,看到转圈,执行kill -9 进程ID,可以看到转圈立即停止。可以想象到kill -9是立即杀死进程,不会等待善后。
  • 用chrome请求/test,看到转圈,执行kill 进程ID,可以看到继续转圈,但是过了一阵子界面就不转圈停止了。可以想象到,还是会等待善后的,即会
    等待还没运行完的线程,但是因为线程实在处理太久了,kill是有最大等待时间的,过了这个时间还不处理完毕,就直接关闭了

上述只是看表象,我们写了一个 TestAnnotationPreDestroy 类监听当springboot程序被关闭时打印一条语句,可以看到kill -9时不打印,而kill时会打印,这是更加客观的证据

kill 究竟会等待多长时间?

这个应该是操作系统会留多少时间给进程善后,具体多少,我暂时未知

actuator 的 /actuator/shutdown优雅关机,属于哪种类型

从观察的结果来看 /actuator/shutdown 不是 kill -9,应该是使用 kill来实现的,它跟 kill是一样的,都会等待一段时间,这短时间还执行不完就强关

kill 和 kill -9 以及 /actuator/shutdown 是不是执行后程序就不再接收新的请求?

请求/test接口,执行以下命令,再迅速得在/test还在转圈的时候访问/接口,是不是程序就不再接收新的请求?(即/没响应)

  • kill -9:是直接杀死,无所谓的是否还接收新请求,/无响应
  • kill:/无响应,说明/test是已有正在处理的需求,那继续处理,但是对于/是新请求的,就不再接收这个请求,chrome页面直接就返回 “无法访问此网站”(跟程序没启动时访问得到的结果同)
  • /actuator/shutdown:同 kill
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值