研究kill 和 kill -9 的区别

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 研究kill 和 kill -9 的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

研究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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135268.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!