tomcat 如何在Azure应用服务上执行线程转储?

qacovj5a  于 2022-11-13  发布在  其他
关注(0)|答案(4)|浏览(122)

我有一个运行Tomcat 8.5的Azure应用程序服务,似乎不知道如何进行线程转储。控制台和调试控制台都无法识别jstack。

n53p2ov0

n53p2ov01#

在Azure应用服务上,所有流行的Java版本都已经安装在路径D:\Program Files (x86)\Java下,以版本1.8.0u73为例,请参见下图。

您可以通过Kudu控制台工具命令set PATH=D:\Program Files (x86)\Java\jdk1.8.0_73\bin;%PATH%临时向环境中添加Java工具,然后,jstack工具在当前Kudu会话中可用。

o2g1uqev

o2g1uqev2#

受前面答案的启发,我创建了下面的bat脚本(我想可能是powershell)来完成这项工作:

powershell -Command "get-process java |select -expand id" > pid.txt
set /p id= < pid.txt
"%JAVA_HOME%\bin\jstack" -F %id% > out.txt

它使用你在应用中使用的java版本(JAVA_HOME),不需要你的任何输入。它很简单,也很有用。例如,只要在你的wwwroot中创建一个bat文件,然后随时运行它。

sg24os4d

sg24os4d3#

我知道这是一个老问题,但对于Azure应用服务上的Windows应用程序,这可以通过转到Azure门户-〉诊断和解决问题刀片-〉诊断工具,然后从左侧菜单或中间窗格中选择收集Java线程转储来轻松完成。

wgxvkvu9

wgxvkvu94#

  • 从Kudu的Process Explorer中获取java进程的PID(高级工具)
  • 使用以下命令收集线程转储:文件名:\home\threaddump. txt

相关问题