给定一个在 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 工具来分析线程转储。
以上是获取在 JRE Docker 映像上运行的 Java 容器的线程转储的详细内容。更多信息请关注PHP中文网其他相关文章!