使用docker查看jvm狀態,在docker中使用jmap,jstat


Docker中查看JVM的信息:

1.     列出docker容器:docker ps

2.     標准輸入和關聯終端:docker exec -it 容器ID  bash

3.     查找出java進程: ps – ef | grep java

4.     統計gc信息統計: jstat –gcutil 466 3000 每三秒打印一次

如果CPU飆太高,可以參考《java調優1:找出Java進程中大量消耗CPU

示例1--jstack查看線程堆棧信息

查看正在運行的容器id

docker ps

這里我運行的是一個spring boot應用,docker容器id如下

 

使用docker exec進入Docker容器,命令如下

docker exec -it be6203473016 /bin/sh
be6203473016 是CONTAINER ID

運行jps,已經能看到剛才啟動的spring boot應用了

這時就可以使用jstat,jmap等根據進程id查看程序狀態了,以下是我運行jstack查看的堆棧信息

 

示例2--jmap導出內存堆棧信息

jmap -dump:format=b,file=/logs/test.bin 9

(上面的logs目錄需要你自己在docker容器里找個已存在的目錄啊)

導出jmap dump的文件,進一步分析,copy docker中的文件到宿主機的當前目錄,命令如下:

docker cp be6203473016:/logs/test.bin .

test.bin 是我剛才用jmap -dump生成的文件

be6203473016是docker 容器id

在用sz從宿主機下載到工作電腦,命令如下:

sz test.bin

 

示例3--jstat統計gc回收信息

 jstat –gcutil 9 3000

每三秒打印一次

 

示例4--jinfo統計gc回收信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM