如何在 Azure 应用服务上进行线程转储?
How to do a thread dump on Azure App Service?
我有一个 Azure 应用服务 运行 Tomcat 8.5,但似乎不知道如何进行线程转储。 jstack 在控制台和 DebugConsole 中都无法识别。
在 Azure App Service 上,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 会话中可用。
受前面答案的启发,我创建了以下 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 文件,然后随时 运行 它。
我有一个 Azure 应用服务 运行 Tomcat 8.5,但似乎不知道如何进行线程转储。 jstack 在控制台和 DebugConsole 中都无法识别。
在 Azure App Service 上,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 会话中可用。
受前面答案的启发,我创建了以下 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 文件,然后随时 运行 它。