1. 程式人生 > 其它 >docker 檢視 JVM 狀態

docker 檢視 JVM 狀態

技術標籤:dockerdocker

檢視 docker 程序,獲取containerid

docker ps

在這裡插入圖片描述

進入容器

docker exec -it containerid /bin/bash

有時候直接用上述命令會有以下錯誤出現,,這個錯誤說明,該映象不包含bash的風格操作,沒有這樣的檔案或目錄,可能你的映象基於busybox,他沒有bash shell,但他在/bin/sh 有一個shell,可以使用以下命令呼叫

OCI runtime exec failed: exec failed: container_linux.go:337: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown

docker exec -ti containerid /bin/sh

檢視 JVM 資訊

  • jstack 檢視執行緒堆疊資訊
  • jmap 匯出記憶體堆疊資訊
  • jstat 統計gc 回收資訊
  • jinfo 統計gc 回收資訊
    這裡可能會出現pid 為1導致openjdk 為8時列印不了堆疊資訊,我將dockerfile 的openjdk改為11 後可以,但網上有其他方式解決,詳情看:http://www.likecs.com/show-46716.html
    報錯資訊:Unable to get pid of LinuxThreads manager thread
    在這裡插入圖片描述

jstack 檢視執行緒堆疊資訊示例

jstack app 或者檢視下pid 檔案上的pid值

在這裡插入圖片描述
使用docker cp 將匯出的檔案複製到宿主機當前目錄

# 其中 3a9a6bd0f396 為容器 containerid
docker cp 3a9a6bd0f396:1654.txt 1564.txt