docker 檢視 JVM 狀態
阿新 • • 發佈:2020-12-14
檢視 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