原文链接:https://blog.wanvale.com/archives/170/
概述
本地部署项目后不知道什么原因,项目在cmd中卡住,没有反应。
日志停止输出且前端发请求也没有响应,一直在等待。
问题分析
首先,项目打包成jar,启动方式是windows cmd,批处理内容如下
java -jar dev.jar
主要考虑的方面是以下几点:
- 是否日志输出超出缓冲区大小导致程序假死
- 是否代码问题,处理数据逻辑错误
- 是否与内嵌tomcat有关
另外很重要的一点是部署项目的另一台机器上执行出现bug前同样的操作并不能被复现,且该bug出现的概率非常小。
问题排查
日志排查
问题发生后,服务端并没有关闭
首先审查日志文件
但日志文件并没有输出任何错误,也并未提供任何有价值的信息
代码排查
初步推测可能是拦截器未做出响应
复查拦截器相关代码发现并非该原因
日志异步
考虑到可能是日志非异步输出的问题,但经过测试并非该问题
关键点
因为bug没法复现,便准备重启,按下Ctrl+C的一瞬间,卡住的日志都刷新了出来,服务器也能正常接收请求了。