首页  >  文章  >  Java  >  获取在 JRE Docker 映像上运行的 Java 容器的线程转储

获取在 JRE Docker 映像上运行的 Java 容器的线程转储

Patricia Arquette
Patricia Arquette原创
2024-11-03 22:24:31512浏览

给定一个在 Kubernetes 集群中使用基于 JRE 的 docker 镜像运行的 web 应用程序,例如:tomcat:9.0-jre11-temurin,那么获取线程转储并不容易,因为基于 JRE 的 docker 镜像不包含 jstack 等工具、jmap...

我们可以使用 jattach 工具来完成我们的任务。太长了; jattach 是 Andrei Pangin 用 C 语言编写的紧凑工具。

首先我们需要将工具下载到容器中:

打开容器中的外壳:

kubectl -n default exec -it your-tomcat-pod -c your-tomcat-container -- bash

将 jattach 下载到工作目录

cd /working-dir

curl -L -O https://github.com/apangin/jattach/releases/download/v2.2/jattach 

chmod +x jattach

从终端创建线程转储并存储在输出文件中

kubectl -n default exec your-tomcat-pod \
  -c your-tomcat-container  -- \
  /working-dir/jattach 1 threaddump > thread-dump.txt

然后您可以使用 jstack.review 工具来分析线程转储。

Get thread dump of Java container running on JRE Docker image

以上是获取在 JRE Docker 映像上运行的 Java 容器的线程转储的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn