springboot项目在cmd窗口运行后台卡顿问题
- 1、背景介绍
- 2、问题描述
- 3、问题追踪
- 4、线程快照分析
- 5、解决办法
项目使用Springboot开发,项目打成jar后,部署在windows环境下,通过命令:java -jar project.jar的方式启动运行。
项目每次启动后,开始时可以正常访问。经过一段时间的运行,通过浏览器系统无法登陆,查看后台日志时,可以看到系统后台卡住,日志不再输出。在CMD窗口输入Ctrl + C,强制结束应用进程后,系统便能正常登录。
有时,在CMD窗口通过输入回车,后台会将之前卡住的日志全部刷出来,然后便能正常登录,但有时输入回车不起作用。
当系统后台再次卡住,应用无法访问时,按照如下步骤进行排查定位:
- 找到java_home的bin下jvisualvm.exe ,双击运行,即可看到下图界面;
- 点击右侧“线程Dump”按钮,保存当前所有线程信息,保存为dump文件,可在左侧点击查看保存内容。
- 在CMD窗口输入:Ctrl+C,强制结束应用线程;
- 如第二步操作,再次保存结束线程后,所有线程的快照。
- 线程统计情况对比:
Ctrl+C执行前
Ctrl+C执行后 - 线程执行情况对比:
Ctrl+C执行前
Ctrl+C执行后 - dump文件内容对比:
执行Ctrl+C线程状态变化的是QuartzScheduler_QuartzSchedulerThread,第二个线程挂起,在等待第一个线程;第一个线程在写日志,但一直处在Runnable状态。
结论:定时任务执行时,写日志输出IO阻塞,导致应用后台卡住。
- 将springboot日志输出,修改为异步的方式输出,避免同步输出阻塞;
- 由于windows中cmd存在日志输出bug,导致经常性日志卡住,具体表现为:输出内容卡死问题(命令行卡死不动,但是进程和线程依然再运行),随便敲一下回车键,命令行会马上打印卡死期间输出的信息。这种情况,只需要对cmd窗口进行设置即可:右键窗口标题-属性,把快速编辑模式关掉就能避免这个问题。
到此这篇服务器部署springboot项目卡顿(部署springboot项目到服务器上)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-yjs/48140.html