Jakarta ee 调试冻结的web应用程序

Jakarta ee 调试冻结的web应用程序,jakarta-ee,tomcat,Jakarta Ee,Tomcat,形势 有时我的应用程序似乎会冻结。我得到的唯一迹象是,我的浏览器将显示“正在等待本地主机…”。如果我重新启动浏览器并访问应用程序,它将继续等待。到目前为止,唯一的解决方案是关闭Tomcat,然后再打开它。然后问题就消失了。我很有信心这是一个服务器端进程,已经接管,而不是客户端 问题 与其只分析我的代码,还不如在任何给定时间实际检查Tomcat在做什么或在做什么,有点像“Tomcat任务管理器”。我怀疑JVM在后台运行的某个进程是罪魁祸首,但我不确定该如何进行分析 问题 当没有web请求时,查看T

形势

有时我的应用程序似乎会冻结。我得到的唯一迹象是,我的浏览器将显示“正在等待本地主机…”。如果我重新启动浏览器并访问应用程序,它将继续等待。到目前为止,唯一的解决方案是关闭Tomcat,然后再打开它。然后问题就消失了。我很有信心这是一个服务器端进程,已经接管,而不是客户端

问题

与其只分析我的代码,还不如在任何给定时间实际检查Tomcat在做什么或在做什么,有点像
“Tomcat任务管理器”
。我怀疑JVM在后台运行的某个进程是罪魁祸首,但我不确定该如何进行分析

问题

  • 当没有web请求时,查看Tomcat正在做什么的最佳方式是什么

  • 知道我应该调查哪些后台进程或线程可能是罪魁祸首吗

  • 问题的可能原因:


    当我开始跨多个页面使用单例时,这个问题就开始了。在我将其作为原因之前,我想追查一下实际发生冰冻的地方

    以下是我过去使用过的4种诊断方法。每一个都有点复杂,您可能无法在您的环境中使用它

  • 将应用程序连接到VisualVM,查看线程的状态(可能出现死锁)

  • 另一个类似的替代方法是从JVM获取一个线程转储,您可以查看是否有多个线程在等待锁定)。这说明了如何进行线程转储

  • 另一个选择是,如果您仍然无法使用这些工具找到它,您可能需要使用诸如YourKit之类的探查器,查看您的应用程序正在做什么

  • 最后一个是在中运行应用程序,每当你的应用程序停止正常工作时,你可以从IDE连接,查看它挂起的确切位置


  • 美好的VisualVM看起来很有前途。谢谢。