我有一个运行Tomcat 8.5的Azure应用服务,似乎无法弄清楚如何进行线程转储。控制台和DebugConsole中都无法识别jstack。
答案 0 :(得分:2)
在Azure App Service上,所有流行的Java版本都已安装在路径D:\Program Files (x86)\Java
上。以1.8.0u73版为例,请参见下图。
您可以命令set PATH=D:\Program Files (x86)\Java\jdk1.8.0_73\bin;%PATH%
通过Kudu控制台工具临时将Java工具添加到环境中。然后,jstack
工具在当前的Kudu会话中可用。
答案 1 :(得分:0)
受到上一个答案的启发,我创建了以下蝙蝠脚本(可能是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文件,然后随时运行它。