我有一个运行Tomcat 8.5的Azure应用程序服务,似乎不知道如何进行线程转储。控制台和调试控制台都无法识别jstack。
n53p2ov01#
在Azure应用服务上,所有流行的Java版本都已经安装在路径D:\Program Files (x86)\Java下,以版本1.8.0u73为例,请参见下图。
D:\Program Files (x86)\Java
您可以通过Kudu控制台工具命令set PATH=D:\Program Files (x86)\Java\jdk1.8.0_73\bin;%PATH%临时向环境中添加Java工具,然后,jstack工具在当前Kudu会话中可用。
set PATH=D:\Program Files (x86)\Java\jdk1.8.0_73\bin;%PATH%
jstack
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文件,然后随时运行它。
sg24os4d3#
我知道这是一个老问题,但对于Azure应用服务上的Windows应用程序,这可以通过转到Azure门户-〉诊断和解决问题刀片-〉诊断工具,然后从左侧菜单或中间窗格中选择收集Java线程转储来轻松完成。
wgxvkvu94#
4条答案
按热度按时间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会话中可用。o2g1uqev2#
受前面答案的启发,我创建了下面的bat脚本(我想可能是powershell)来完成这项工作:
它使用你在应用中使用的java版本(JAVA_HOME),不需要你的任何输入。它很简单,也很有用。例如,只要在你的wwwroot中创建一个bat文件,然后随时运行它。
sg24os4d3#
我知道这是一个老问题,但对于Azure应用服务上的Windows应用程序,这可以通过转到Azure门户-〉诊断和解决问题刀片-〉诊断工具,然后从左侧菜单或中间窗格中选择收集Java线程转储来轻松完成。
wgxvkvu94#