給定一個在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中文網其他相關文章!