解决springboot2.x 工程运行期间莫名其妙自动重启
- p.s 之前实习那会儿也遇到过这样的问题,查了两天也没弄明白,最后mentor出手一下就解决了。直接上结论:
1 | <dependency> |
但是,于我而言,解决问题的经历却颇为坎坷。
以下是当时的全过程:
每次需要进行“比较重的I/O请求”,比如大量数据存MySQL、ES时,springboot会莫名其妙的自动重启。一般只会在Linux服务端出现,不太好排查。虽然这并不影响最后的结果,但问题摆在那里,总归要解决的。于是,我开始了漫长的排查之路:
- 首先查看业务日志,执行到数据库操作就自动重启了,没有任何Exception;纳闷了
- 然后试着“百度一下”!百度出来的结果答非所问,好多结果都是“教你如何设置自动重启”,而不是“解决自动重启问题”,真令我抓狂。有几篇说是和spring-boot-devtools相关,然而按上面的做法,设置了yml配置,没有卵用。
- 于是将日志级别由INFO调到DEBUG,依旧没有观察到线索,倒是“线程池销毁”相关的那几行引起了我的注意;
- 然后开始找线程池监控的软件。公司用的是自己封装的线程池,druid黑科技就别想了。查到spring-acutor(好像这么拼)和spring-admin可以监控,但是由于没法通过IP直连服务器(隔着跳板机),而且我们开发没有权限绕过jiro部署东西,所以无法实施;
- 既然无法直接监控线程池,那就大胆假设吧!我估计是线程池的线程数没给够,于是加线程数,维持时间等,重新部署,自测了几遍,居然成功呢,没自动重启!赶紧告诉mentor这个问题解决了,mentor夸了我一顿,美滋滋
- 好景不长,没过多久又自动重启了。。。翻了翻线程池源码,原来公司的数据库线程池,其实并不支持我刚才加的那些参数。。。我只是瞎猫碰上死耗子。
- 最后,我向mentor再次反馈问题,mentor说,我来吧。不到10分钟,解决了
其他类似问题的博客:SpringBoot工程 一修改文件就自动重启问题分析及解决